pypi-publish/.github/workflows/reusable-smoke-test.yml

128 lines
3.3 KiB
YAML
Raw Normal View History

---
2024-10-04 18:20:25 -04:00
name: ♻️ 🧪
2022-12-05 17:01:24 -05:00
on: # yamllint disable-line rule:truthy
2024-10-04 18:20:25 -04:00
workflow_call:
2022-12-05 17:01:24 -05:00
env:
devpi-password: abcd1234
devpi-username: root
devpi-port: 3141
FORCE_COLOR: 1 # Request colored output from CLI tools supporting it
MYPY_FORCE_COLOR: 1 # MyPy's color enforcement
PIP_DISABLE_PIP_VERSION_CHECK: 1
PIP_NO_PYTHON_VERSION_WARNING: 1
PIP_NO_WARN_SCRIPT_LOCATION: 1
PY_COLORS: 1 # Recognized by the `py` package, dependency of `pytest`
TOX_PARALLEL_NO_SPINNER: 1
TOX_TESTENV_PASSENV: >- # Make tox-wrapped tools see color requests
FORCE_COLOR
MYPY_FORCE_COLOR
NO_COLOR
PY_COLORS
PYTEST_THEME
PYTEST_THEME_MODE
2022-12-05 17:01:24 -05:00
jobs:
fail-fast:
strategy:
matrix:
os: [macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
timeout-minutes: 2
steps:
- name: Check out the action locally
2024-10-04 18:20:25 -04:00
uses: actions/checkout@v4
with:
path: test
- name: Fail-fast in unsupported environments
continue-on-error: true
id: fail-fast
uses: ./test
- name: Error if action did not fail-fast in unsupported environments
if: steps.fail-fast.outcome == 'success'
run: |
>&2 echo This action should fail-fast in unsupported environments.
exit 1
2022-12-06 16:06:28 -05:00
smoke-test:
2024-10-04 18:20:25 -04:00
2022-12-05 17:01:24 -05:00
runs-on: ubuntu-latest
2022-12-05 17:01:24 -05:00
services:
devpi:
image: muccg/devpi
env:
DEVPI_PASSWORD: ${{ env.devpi-password }}
2022-12-05 17:01:24 -05:00
ports:
- 3141
timeout-minutes: 2
2022-12-05 17:01:24 -05:00
steps:
- name: Check out the action locally
uses: actions/checkout@v4
with:
path: test
2022-12-06 16:26:08 -05:00
- name: Install the packaging-related tools
2022-12-06 16:27:07 -05:00
run: python3 -m pip install build twine
env:
PIP_CONSTRAINT: test/requirements/runtime.txt
2022-12-06 16:26:08 -05:00
- name: Create the stub package importable directory
run: mkdir -pv src/test_package
2022-12-06 16:26:08 -05:00
- name: Populate the stub package `__init__.py`
run: echo '__version__ = "0.1"' > src/test_package/__init__.py
- name: Populate the stub package `README.md`
run: echo "# Test Package" > README.md
- name: Populate the stub package `pyproject.toml`
run: echo "$CONTENTS" > pyproject.toml
env:
CONTENTS: |
[build-system]
requires = [
"setuptools == 65.6.3",
]
build-backend = "setuptools.build_meta"
[project]
name = "test-package"
version = "0.1"
readme = "README.md"
2022-12-06 16:26:08 -05:00
- name: Build the stub package sdist and wheel distributions
run: python3 -m build
- name: Register the stub package in devpi
run: |
for dist in dist/*.tar.gz
do
echo "Registering ${dist}..."
twine register "${dist}"
done
env:
TWINE_USERNAME: ${{ env.devpi-username }}
TWINE_PASSWORD: ${{ env.devpi-password }}
TWINE_REPOSITORY_URL: >-
http://localhost:${{
job.services.devpi.ports[env.devpi-port]
}}/${{
env.devpi-username
}}/public/
2022-12-06 16:26:08 -05:00
- name: ✅ Smoke-test the locally checked out action
uses: ./test
env:
DEBUG: >-
true
PATH: utter-nonsense
with:
user: ${{ env.devpi-username }}
password: ${{ env.devpi-password }}
repository-url: >-
http://devpi:${{ env.devpi-port }}/${{ env.devpi-username }}/public/
...