update: add aarch64 target with conditional V8 build options in relea… #9
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 | |
| v8_from_source: "1" | |
| extra_gn_args: v8_enable_temporal_support=false | |
| docker_options: -e V8_FROM_SOURCE=1 -e EXTRA_GN_ARGS=v8_enable_temporal_support=false | |
| - runner: ubuntu-24.04-arm | |
| target: aarch64 | |
| container: quay.io/pypa/manylinux_2_28_aarch64:latest | |
| v8_from_source: "0" | |
| extra_gn_args: "" | |
| docker_options: -e V8_FROM_SOURCE=0 | |
| 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 on x86_64. Source builds | |
| # inject V8_TLS_USED_IN_LIBRARY through the v8 crate build script. | |
| # aarch64 uses the published rusty_v8 archive. | |
| V8_FROM_SOURCE: ${{ matrix.v8_from_source }} | |
| # The crates.io v8 archive does not include Chromium's | |
| # third_party/rust/chromium_crates_io/vendor tree needed by the | |
| # Temporal Rust dependency, so source builds avoid those GN targets. | |
| EXTRA_GN_ARGS: ${{ matrix.extra_gn_args }} | |
| 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: ${{ matrix.docker_options }} | |
| 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/* |