Use cibuildwheel action major.minor #7
This file contains hidden or 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: | |
| permissions: {} | |
| env: | |
| FORCE_COLOR: 1 | |
| jobs: | |
| build-wheels: | |
| name: "${{ matrix.os }}: ${{ matrix.cibw_arch }}" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: windows-latest | |
| cibw_arch: "auto" | |
| - os: windows-11-arm | |
| cibw_arch: "ARM64" | |
| - os: macos-latest | |
| cibw_arch: "x86_64 arm64" | |
| - os: ubuntu-latest | |
| cibw_arch: "x86_64 i686" | |
| - os: ubuntu-24.04-arm | |
| cibw_arch: aarch64 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: git fetch --prune --unshallow | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.x" | |
| # https://github.com/pypa/cibuildwheel | |
| - name: Build wheels | |
| uses: pypa/[email protected] | |
| with: | |
| output-dir: dist | |
| # Options are supplied via environment variables: | |
| env: | |
| # Build wheels for the currently selected architecture. | |
| CIBW_ARCHS: ${{ matrix.cibw_arch }} | |
| # Include latest Python beta. | |
| CIBW_ENABLE: cpython-prerelease pypy graalpy | |
| # Skip EOL Python versions | |
| CIBW_SKIP: "pp310* gp311*" | |
| # Run the test suite after each build. | |
| CIBW_TEST_REQUIRES: "pytest" | |
| CIBW_TEST_COMMAND: pytest {package}/tests | |
| # GraalPy has a bug with progress bar rendering in pip | |
| PIP_PROGRESS_BAR: "off" | |
| - name: Upload as build artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-${{ matrix.os }} | |
| path: dist/*.whl | |
| build-sdist-and-upload: | |
| runs-on: ubuntu-latest | |
| needs: ['build-wheels'] | |
| permissions: | |
| # IMPORTANT: this permission is mandatory for trusted publishing | |
| id-token: write | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: | | |
| git fetch --prune --unshallow | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.x" | |
| - 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@v5 | |
| 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/ |