Fix CI: use macos-15-intel (macos-13 is retired) #184
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: build | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - master | |
| tags: | |
| - '*' | |
| # https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value | |
| # Only cancels-in-progress on PRs (head_ref only defined in PR, fallback run_id always unique) | |
| concurrency: | |
| group: ${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| jobs: | |
| test: | |
| name: Test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Install dependencies and build | |
| run: | | |
| pip install build cmake ninja | |
| pip install -v .[test] | |
| - name: Run tests | |
| run: pytest tests/ -v | |
| build_wheels: | |
| name: Build wheels on ${{ matrix.os }} | |
| needs: [test] | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| # macos-15-intel is Intel x86_64, macos-14 is Apple Silicon ARM64 | |
| os: [ubuntu-latest, macos-15-intel, macos-14] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@v2.22.0 | |
| env: | |
| CIBW_SKIP: "pp* *-win32 *_i686" | |
| CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }} | |
| path: ./wheelhouse/*.whl | |
| compression-level: 0 | |
| build_sdist: | |
| name: Build source distribution | |
| needs: [test] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build sdist | |
| run: pipx run build --sdist | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: cibw-sdist | |
| path: dist/*.tar.gz | |
| compression-level: 0 | |
| upload_pypi: | |
| needs: [build_wheels, build_sdist] | |
| runs-on: ubuntu-latest | |
| environment: pypi | |
| permissions: | |
| id-token: write | |
| if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') | |
| steps: | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| # unpacks all CIBW artifacts into dist/ | |
| pattern: cibw-* | |
| path: dist | |
| merge-multiple: true | |
| - name: Verify wheel integrity | |
| run: | | |
| pip install twine | |
| for whl in dist/*.whl; do | |
| echo "Checking $whl..." | |
| unzip -t "$whl" || { echo "CORRUPT: $whl"; exit 1; } | |
| done | |
| twine check dist/* | |
| - uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| verbose: true | |
| password: ${{ secrets.PYPI_API_TOKEN }} |