Update pypa/cibuildwheel action to v2.17.0 (#623) #230
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Deploy | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
paths: | |
- ".github/workflows/deploy.yml" | |
release: | |
types: | |
- published | |
workflow_dispatch: | |
env: | |
FORCE_COLOR: 1 | |
jobs: | |
build-native-wheels: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [windows-latest, macOS-latest, ubuntu-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
- run: git fetch --prune --unshallow | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.x" | |
cache: pip | |
cache-dependency-path: ".github/workflows/deploy.yml" | |
# https://github.com/pypa/cibuildwheel | |
- name: Build wheels | |
uses: pypa/cibuildwheel@v2.17.0 | |
with: | |
output-dir: dist | |
# Options are supplied via environment variables: | |
env: | |
# Build separate wheels for macOS's different architectures. | |
CIBW_ARCHS_MACOS: "x86_64 arm64" | |
# Build only on Linux architectures that don't need qemu emulation. | |
CIBW_ARCHS_LINUX: "x86_64 i686" | |
# Include latest Python beta. | |
CIBW_PRERELEASE_PYTHONS: True | |
# Run the test suite after each build. | |
CIBW_TEST_REQUIRES: "pytest" | |
CIBW_TEST_COMMAND: pytest {package}/tests | |
- name: Upload as build artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-${{ matrix.os }} | |
path: dist/*.whl | |
build-QEMU-emulated-wheels: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: | |
- pp39 | |
- pp310 | |
- cp38 | |
- cp39 | |
- cp310 | |
- cp311 | |
- cp312 | |
steps: | |
- uses: actions/checkout@v4 | |
- run: git fetch --prune --unshallow | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.x" | |
cache: pip | |
cache-dependency-path: ".github/workflows/deploy.yml" | |
# https://github.com/docker/setup-qemu-action | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
# https://github.com/pypa/cibuildwheel | |
- name: Build wheels | |
uses: pypa/cibuildwheel@v2.17.0 | |
with: | |
output-dir: dist | |
# Options are supplied via environment variables: | |
env: | |
# Build only the currently selected Linux architecture (so we can | |
# parallelise for speed). | |
CIBW_ARCHS_LINUX: "aarch64" | |
# Likewise, select only one Python version per job to speed this up. | |
CIBW_BUILD: "${{ matrix.python-version }}-*" | |
# Include latest Python beta. | |
CIBW_PRERELEASE_PYTHONS: True | |
# Run the test suite after each build. | |
CIBW_TEST_REQUIRES: "pytest" | |
CIBW_TEST_COMMAND: pytest {package}/tests | |
- name: Upload as build artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-qemu-${{ matrix.python-version }} | |
path: dist/*.whl | |
build-sdist-and-upload: | |
runs-on: ubuntu-latest | |
needs: ['build-native-wheels', 'build-QEMU-emulated-wheels'] | |
permissions: | |
# IMPORTANT: this permission is mandatory for trusted publishing | |
id-token: write | |
steps: | |
- uses: actions/checkout@v4 | |
- run: | | |
git fetch --prune --unshallow | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.x" | |
cache: pip | |
cache-dependency-path: "setup.py" | |
- name: Install dependencies | |
run: | | |
python -m pip install -U pip | |
python -m pip install -U build twine | |
- name: Download wheels from build artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: wheels-* | |
merge-multiple: true | |
path: dist-wheels/ | |
- name: Build package | |
run: | | |
git tag | |
python -m build --sdist | |
twine check --strict dist/* | |
twine check --strict dist-wheels/* | |
- name: Publish wheels to PyPI | |
if: github.event.action == 'published' | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
packages-dir: dist-wheels/ | |
- name: Publish sdist to PyPI | |
if: github.event.action == 'published' | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
- name: Publish wheels to TestPyPI | |
if: | | |
github.repository == 'ultrajson/ultrajson' && | |
github.ref == 'refs/heads/main' | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
repository-url: https://test.pypi.org/legacy/ | |
packages-dir: dist-wheels/ | |
- name: Publish sdist to TestPyPI | |
if: | | |
github.repository == 'ultrajson/ultrajson' && | |
github.ref == 'refs/heads/main' | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
repository-url: https://test.pypi.org/legacy/ |