Edit test workflow, install twine #6
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 CI wheels | |
| env: | |
| # A tag or branch name or a commit hash for the scipy/scipy repo, for which | |
| # to build wheels. This is normally set to `main` in the main branch of this | |
| # repo, and to a tag name (e.g., `v2.3.2`) on a release branch. | |
| SOURCE_REF_TO_BUILD: main | |
| on: | |
| # TODO cron job? scipy does this | |
| # Save CI by only running this on release branches or tags. | |
| push: # FOR TESTING ONLY | |
| branches: | |
| - main | |
| - v[0-9]+.[0-9]+.x | |
| tags: | |
| - v* | |
| # Also allow running this action on PRs if requested by applying the | |
| # "Run cibuildwheel" label. | |
| pull_request: | |
| branches: | |
| - main | |
| - v[0-9]+.[0-9]+.x | |
| workflow_dispatch: | |
| inputs: | |
| environment: | |
| description: Which PyPI environment to upload to, if any | |
| required: true | |
| type: choice | |
| options: ["none", "testpypi", "pypi"] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| build_sdist: | |
| name: Build sdist | |
| runs-on: ubuntu-latest | |
| outputs: | |
| SDIST_NAME: ${{ steps.sdist.outputs.SDIST_NAME }} | |
| steps: | |
| - name: Checkout matplotlib-release | |
| uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Checkout matplotlib | |
| uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| repository: matplotlib/matplotlib | |
| ref: ${{ env.SOURCE_REF_TO_BUILD }} | |
| path: mpl-src | |
| submodules: true | |
| persist-credentials: false | |
| fetch-depth: 0 | |
| - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 | |
| name: Install Python | |
| with: | |
| python-version: '3.11' | |
| # Something changed somewhere that prevents the downloaded-at-build-time | |
| # licenses from being included in built wheels, so pre-download them so | |
| # that they exist before the build and are included. | |
| - name: Pre-download bundled licenses | |
| run: | | |
| mkdir -p LICENSE | |
| curl -Lo LICENSE/LICENSE_QHULL https://github.com/qhull/qhull/raw/2020.2/COPYING.txt | |
| - name: Install dependencies | |
| run: python -m pip install build twine | |
| - name: Build sdist | |
| id: sdist | |
| run: | | |
| cd mpl-src | |
| python -m build --sdist | |
| python ci/export_sdist_name.py | |
| - name: Check README rendering for PyPI | |
| run: twine check mpl-src/dist/* | |
| - name: Upload sdist result | |
| uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 | |
| with: | |
| name: cibw-sdist | |
| path: mpl-src/dist/*.tar.gz | |
| if-no-files-found: error | |
| build_wheels: | |
| needs: build_sdist | |
| name: Build wheels on ${{ matrix.os }} for ${{ matrix.cibw_archs }} | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| CIBW_BEFORE_BUILD: >- | |
| rm -rf {package}/build | |
| CIBW_BEFORE_BUILD_WINDOWS: >- | |
| pip install delvewheel && | |
| rm -rf {package}/build | |
| CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: >- | |
| delvewheel repair -w {dest_dir} {wheel} | |
| # On Windows, we explicitly request MSVC compilers (as GitHub Action runners have | |
| # MinGW on PATH that would be picked otherwise), switch to a static build for | |
| # runtimes, but use dynamic linking for `VCRUNTIME140.dll`, `VCRUNTIME140_1.dll`, | |
| # and the UCRT. This avoids requiring specific versions of `MSVCP140.dll`, while | |
| # keeping shared state with the rest of the Python process/extensions. | |
| CIBW_CONFIG_SETTINGS_WINDOWS: >- | |
| setup-args="--vsenv" | |
| setup-args="-Db_vscrt=mt" | |
| setup-args="-Dcpp_link_args=['ucrt.lib','vcruntime.lib','/nodefaultlib:libucrt.lib','/nodefaultlib:libvcruntime.lib']" | |
| CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 | |
| CIBW_SKIP: "*-musllinux_aarch64" | |
| CIBW_TEST_COMMAND: >- | |
| python -m pip install build twine && | |
| twine check {wheel} && | |
| python {package}/ci/check_wheel_licenses.py {wheel} && | |
| python {package}/ci/check_version_number.py | |
| MACOSX_DEPLOYMENT_TARGET: "10.12" | |
| strategy: | |
| matrix: | |
| include: | |
| - os: ubuntu-latest | |
| cibw_archs: "x86_64" | |
| - os: ubuntu-24.04-arm | |
| cibw_archs: "aarch64" | |
| - os: windows-latest | |
| cibw_archs: "AMD64" | |
| - os: windows-11-arm | |
| cibw_archs: "ARM64" | |
| - os: macos-15-intel | |
| cibw_archs: "x86_64" | |
| - os: macos-14 | |
| cibw_archs: "arm64" | |
| steps: | |
| - name: Download sdist | |
| uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 | |
| with: | |
| name: cibw-sdist | |
| path: dist/ | |
| - name: Build wheels for CPython 3.14 | |
| uses: pypa/cibuildwheel@9c00cb4f6b517705a3794b22395aedc36257242c # v3.2.1 | |
| with: | |
| package-dir: dist/${{ needs.build_sdist.outputs.SDIST_NAME }} | |
| env: | |
| CIBW_BUILD: "cp314-* cp314t-*" | |
| CIBW_ENABLE: "cpython-freethreading cpython-prerelease" | |
| CIBW_ARCHS: ${{ matrix.cibw_archs }} | |
| CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 | |
| - name: Build wheels for CPython 3.13 | |
| uses: pypa/cibuildwheel@9c00cb4f6b517705a3794b22395aedc36257242c # v3.2.1 | |
| with: | |
| package-dir: dist/${{ needs.build_sdist.outputs.SDIST_NAME }} | |
| env: | |
| CIBW_BUILD: "cp313-* cp313t-*" | |
| CIBW_ENABLE: cpython-freethreading | |
| CIBW_ARCHS: ${{ matrix.cibw_archs }} | |
| - name: Build wheels for CPython 3.12 | |
| uses: pypa/cibuildwheel@9c00cb4f6b517705a3794b22395aedc36257242c # v3.2.1 | |
| with: | |
| package-dir: dist/${{ needs.build_sdist.outputs.SDIST_NAME }} | |
| env: | |
| CIBW_BUILD: "cp312-*" | |
| CIBW_ARCHS: ${{ matrix.cibw_archs }} | |
| - name: Build wheels for CPython 3.11 | |
| uses: pypa/cibuildwheel@9c00cb4f6b517705a3794b22395aedc36257242c # v3.2.1 | |
| with: | |
| package-dir: dist/${{ needs.build_sdist.outputs.SDIST_NAME }} | |
| env: | |
| CIBW_BUILD: "cp311-*" | |
| CIBW_ARCHS: ${{ matrix.cibw_archs }} | |
| - name: Build wheels for PyPy | |
| uses: pypa/cibuildwheel@9c00cb4f6b517705a3794b22395aedc36257242c # v3.2.1 | |
| with: | |
| package-dir: dist/${{ needs.build_sdist.outputs.SDIST_NAME }} | |
| env: | |
| CIBW_BUILD: "pp311-*" | |
| CIBW_ARCHS: ${{ matrix.cibw_archs }} | |
| CIBW_ENABLE: pypy | |
| if: matrix.cibw_archs != 'aarch64' && matrix.os != 'windows-latest' && matrix.os != 'windows-11-arm' | |
| - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 | |
| with: | |
| name: cibw-wheels-${{ runner.os }}-${{ matrix.cibw_archs }} | |
| path: ./wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| if: github.repository == 'matplotlib/matplotlib-release' && github.event_name == 'push' && github.ref_type == 'tag' | |
| name: Upload release to PyPI | |
| needs: [build_sdist, build_wheels] | |
| runs-on: ubuntu-latest | |
| environment: release | |
| permissions: | |
| id-token: write | |
| attestations: write | |
| contents: read | |
| steps: | |
| - name: Download packages | |
| uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 | |
| with: | |
| pattern: cibw-* | |
| path: dist | |
| merge-multiple: true | |
| - name: Print out packages | |
| run: ls dist | |
| - name: Generate artifact attestation for sdist and wheel | |
| uses: actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # v3.0.0 | |
| with: | |
| subject-path: dist/matplotlib-* | |
| - name: Publish package distributions to PyPI | |
| uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0 |