mirror of
https://github.com/pypa/gh-action-pypi-publish.git
synced 2025-01-30 17:49:35 -05:00
cebc64f283
Previously GitHub updated their `ubuntu-latest` images to use Ubuntu
24.04 which has Python 3.12 as the default interpreter. Before that,
it was Ubuntu 22.04 with Python 3.9. This caused an uncontrolled
runtime bump which led to an incompatibility discovery — older
versions of `setuptools` are incompatible with Python 3.12.
This bumps the `setuptools` version following the previous commit
da900af963
that pins the distro version.
Going forward, these two must be bumped in tandem to avoid situations
when one gets upgraded suddenly but the other doesn't.
151 lines
4 KiB
YAML
151 lines
4 KiB
YAML
---
|
|
|
|
name: ♻️ 🧪
|
|
|
|
on: # yamllint disable-line rule:truthy
|
|
workflow_call:
|
|
|
|
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
|
|
|
|
jobs:
|
|
fail-fast:
|
|
|
|
strategy:
|
|
matrix:
|
|
os: [macos-latest, windows-latest]
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
timeout-minutes: 2
|
|
|
|
steps:
|
|
- name: Check out the action locally
|
|
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
|
|
|
|
smoke-test:
|
|
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- ubuntu-24.04
|
|
- ubuntu-22.04
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
services:
|
|
devpi:
|
|
image: muccg/devpi
|
|
env:
|
|
DEVPI_PASSWORD: ${{ env.devpi-password }}
|
|
ports:
|
|
- 3141
|
|
|
|
timeout-minutes: 2
|
|
|
|
steps:
|
|
- name: Check out the action locally
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: test
|
|
- name: Install the packaging-related tools
|
|
run: python3 -m pip install build twine
|
|
env:
|
|
PIP_CONSTRAINT: test/requirements/runtime.txt
|
|
- name: Create the stub package importable directory
|
|
run: mkdir -pv src/test_package
|
|
- 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 == 75.8.0",
|
|
]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "test-package"
|
|
version = "0.1"
|
|
readme = "README.md"
|
|
- name: Build the stub package sdist and wheel distributions
|
|
run: python3 -m build
|
|
- name: Create the Rust package directory
|
|
run: mkdir -pv rust-example
|
|
- name: Initialize a Rust project
|
|
run: cargo init
|
|
working-directory: rust-example
|
|
- name: Populate the Rust package `pyproject.toml`
|
|
run: echo "$CONTENTS" > pyproject.toml
|
|
env:
|
|
CONTENTS: |
|
|
[build-system]
|
|
requires = [
|
|
"maturin ~=1.0",
|
|
]
|
|
build-backend = "maturin"
|
|
working-directory: rust-example
|
|
- name: Build the stub package sdist and wheel distributions
|
|
run: python3 -m build -o ../dist/
|
|
working-directory: rust-example
|
|
- 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/
|
|
- 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/
|
|
|
|
...
|