[pre-commit.ci] pre-commit autoupdate #331
Workflow file for this run
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: Build and upload to PyPI | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.number }}-${{ github.event.ref }} | |
cancel-in-progress: true | |
# Only build on published releases | |
on: | |
release: | |
types: | |
- published | |
# Also allow running this action on PRs if requested by applying the | |
# "Run cibuildwheel" label. | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
- reopened | |
- labeled | |
jobs: | |
build_sdist: | |
if: | | |
github.event_name == 'release' || | |
(github.event_name == 'pull_request' && ( | |
( | |
github.event.action == 'labeled' && | |
github.event.label.name == 'CI: build wheels' | |
) || | |
contains(github.event.pull_request.labels.*.name, | |
'CI: build wheels') | |
) | |
) | |
name: Build source distribution | |
runs-on: ubuntu-latest | |
outputs: | |
SDIST_NAME: ${{ steps.sdist.outputs.SDIST_NAME }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# We need the full history to generate the proper version number | |
fetch-depth: 0 | |
- uses: actions/setup-python@v5 | |
name: Install Python | |
with: | |
python-version: '3.11' | |
- name: Install dependencies | |
run: python -m pip install build twine | |
- name: Build sdist | |
id: sdist | |
run: | | |
python -m build --sdist | |
# Get the name of the build sdist file for later use | |
echo "SDIST_NAME=$(ls -1 dist)" >> $GITHUB_OUTPUT | |
- name: Check README rendering for PyPI | |
run: twine check dist/* | |
- name: Upload sdist result | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cibw-sdist | |
path: dist/*.tar.gz | |
if-no-files-found: error | |
generate-wheels-matrix: | |
name: Generate wheels matrix | |
needs: [build_sdist] | |
runs-on: ubuntu-latest | |
outputs: | |
include: ${{ steps.set-matrix.outputs.include }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install cibuildwheel | |
run: pipx install cibuildwheel==2.16.2 | |
- id: set-matrix | |
run: | | |
MATRIX=$( | |
{ | |
cibuildwheel --print-build-identifiers --platform linux \ | |
| jq -nRc '{"only": inputs, "os": "ubuntu-latest"}' \ | |
&& cibuildwheel --print-build-identifiers --platform macos \ | |
| jq -nRc '{"only": inputs, "os": "macos-latest"}' \ | |
&& cibuildwheel --print-build-identifiers --platform windows \ | |
| jq -nRc '{"only": inputs, "os": "windows-2019"}' | |
} | jq -sc | |
) | |
echo "include=$MATRIX" >> $GITHUB_OUTPUT | |
env: | |
CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-*" | |
# Skip 32 bit builds and musllinux due to lack of numpy wheels | |
CIBW_SKIP: "*-win32 *_i686 *-musllinux*" | |
CIBW_ARCHS_MACOS: x86_64 arm64 | |
build_wheels: | |
name: Build ${{ matrix.os }} ${{ matrix.only }} | |
needs: [generate-wheels-matrix, build_sdist] | |
strategy: | |
matrix: | |
include: ${{ fromJson(needs.generate-wheels-matrix.outputs.include) }} | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Download sdist | |
uses: actions/download-artifact@v4 | |
with: | |
name: cibw-sdist | |
path: dist | |
- uses: pypa/cibuildwheel@f1859528322d7b29d4493ee241a167807661dfb4 # v2.21.2 | |
with: | |
only: ${{ matrix.only }} | |
package-dir: dist/${{ needs.build_sdist.outputs.SDIST_NAME }} | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: cibw-wheels-${{ matrix.os }}-${{ matrix.only }} | |
path: ./wheelhouse/*.whl | |
publish: | |
name: Publish to PyPI | |
# Only publish on releases | |
if: github.event_name == 'release' | |
needs: [build_wheels, build_sdist] | |
environment: | |
name: PyPI | |
url: https://pypi.org/project/cartopy | |
permissions: | |
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download wheels | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: cibw-* | |
path: dist | |
merge-multiple: true | |
- name: Publish Package | |
uses: pypa/[email protected] |