update: specify manylinux containers for cross-platform builds #4
Workflow file for this run
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: Release | |
| on: | |
| push: | |
| tags: | |
| - "v*.*.*" | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| linux: | |
| name: Linux ${{ matrix.target }} py3.10-3.14 | |
| runs-on: ${{ matrix.runner }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - runner: ubuntu-22.04 | |
| target: x86_64 | |
| container: quay.io/pypa/manylinux_2_28_x86_64:latest | |
| - runner: ubuntu-24.04-arm | |
| target: aarch64 | |
| container: quay.io/pypa/manylinux_2_28_aarch64:latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build wheel | |
| uses: PyO3/maturin-action@v1 | |
| env: | |
| # rusty_v8's prebuilt Linux archive uses a TLS model that cannot be | |
| # linked into a Python extension module. Source builds inject | |
| # V8_TLS_USED_IN_LIBRARY through the v8 crate build script. | |
| V8_FROM_SOURCE: "1" | |
| with: | |
| target: ${{ matrix.target }} | |
| # Source-building V8 needs Chromium's `gn` binary, which requires | |
| # GLIBC_2.18+. manylinux2014 only has glibc 2.17, so use 2_28 here. | |
| manylinux: "2_28" | |
| container: ${{ matrix.container }} | |
| docker-options: -e V8_FROM_SOURCE=1 | |
| args: >- | |
| --release | |
| --out dist | |
| --interpreter python3.10 python3.11 python3.12 python3.13 python3.14 | |
| sccache: true | |
| - name: Upload wheel | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-linux-${{ matrix.target }} | |
| path: dist | |
| if-no-files-found: error | |
| windows: | |
| name: Windows ${{ matrix.target }} py${{ matrix.python.version }} | |
| runs-on: ${{ matrix.runner }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - runner: windows-latest | |
| target: x64 | |
| python: | |
| architecture: x64 | |
| version: "3.10" | |
| tag: cp310 | |
| - runner: windows-latest | |
| target: x64 | |
| python: | |
| architecture: x64 | |
| version: "3.11" | |
| tag: cp311 | |
| - runner: windows-latest | |
| target: x64 | |
| python: | |
| architecture: x64 | |
| version: "3.12" | |
| tag: cp312 | |
| - runner: windows-latest | |
| target: x64 | |
| python: | |
| architecture: x64 | |
| version: "3.13" | |
| tag: cp313 | |
| - runner: windows-latest | |
| target: x64 | |
| python: | |
| architecture: x64 | |
| version: "3.14" | |
| tag: cp314 | |
| - runner: windows-11-arm | |
| target: aarch64 | |
| python: | |
| architecture: arm64 | |
| version: "3.11" | |
| tag: cp311 | |
| - runner: windows-11-arm | |
| target: aarch64 | |
| python: | |
| architecture: arm64 | |
| version: "3.12" | |
| tag: cp312 | |
| - runner: windows-11-arm | |
| target: aarch64 | |
| python: | |
| architecture: arm64 | |
| version: "3.13" | |
| tag: cp313 | |
| - runner: windows-11-arm | |
| target: aarch64 | |
| python: | |
| architecture: arm64 | |
| version: "3.14" | |
| tag: cp314 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python.version }} | |
| architecture: ${{ matrix.python.architecture }} | |
| - name: Build wheel | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| target: ${{ matrix.target }} | |
| args: --release --out dist --interpreter python | |
| sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} | |
| - name: Upload wheel | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-windows-${{ matrix.target }}-${{ matrix.python.tag }} | |
| path: dist | |
| if-no-files-found: error | |
| macos: | |
| name: macOS ${{ matrix.platform.target }} py${{ matrix.python.version }} | |
| runs-on: ${{ matrix.platform.runner }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python: | |
| - version: "3.10" | |
| tag: cp310 | |
| - version: "3.11" | |
| tag: cp311 | |
| - version: "3.12" | |
| tag: cp312 | |
| - version: "3.13" | |
| tag: cp313 | |
| - version: "3.14" | |
| tag: cp314 | |
| platform: | |
| - runner: macos-13 | |
| target: x86_64 | |
| - runner: macos-14 | |
| target: aarch64 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python.version }} | |
| - name: Build wheel | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| target: ${{ matrix.platform.target }} | |
| args: --release --out dist --interpreter python | |
| sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} | |
| - name: Upload wheel | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-macos-${{ matrix.platform.target }}-${{ matrix.python.tag }} | |
| path: dist | |
| if-no-files-found: error | |
| sdist: | |
| name: Source distribution | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build sdist | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| command: sdist | |
| args: --out dist | |
| - name: Upload sdist | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: sdist | |
| path: dist | |
| if-no-files-found: error | |
| publish: | |
| name: Publish to PyPI | |
| runs-on: ubuntu-latest | |
| if: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
| needs: [linux, windows, macos, sdist] | |
| permissions: | |
| contents: read | |
| id-token: write | |
| steps: | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| path: dist | |
| merge-multiple: true | |
| - uses: astral-sh/setup-uv@v4 | |
| - name: Publish distributions | |
| run: uv publish dist/* |