Fix issue #385 #76
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: python | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- "**" | |
pull_request: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
jobs: | |
pre_job: | |
runs-on: ubuntu-latest | |
outputs: | |
should_skip: ${{ steps.skip_check.outputs.should_skip }} | |
paths_result: ${{ steps.skip_check.outputs.paths_result }} | |
steps: | |
- id: skip_check | |
uses: fkirc/skip-duplicate-actions@c449d86cf33a2a6c7a4193264cc2578e2c3266d4 # pin@v4 | |
with: | |
paths_ignore: '["docs/**", "*.md", "js/**"]' | |
linux: | |
needs: pre_job | |
if: needs.pre_job.outputs.should_skip != 'true' || startsWith(github.ref, 'refs/tags/') | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: ubuntu-latest | |
target: x86_64 | |
before-script: yum install clang llvm llvm-devel -y && python3 -m ensurepip | |
manylinux: manylinux_2_28 | |
- runner: ubuntu-latest | |
target: aarch64-unknown-linux-gnu | |
maturin-options: --zig | |
# Use zig 0.11.0 because this version contains generic-glibc < 2.38 | |
# after glibc >= 2.38 strchrnul available in glibc by default | |
# and zig cc doesn't provide mechanism to disable it in older glibc targets | |
before-script: | | |
python3 -m pip install ziglang==0.11.0 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.platform.target }} | |
working-directory: cli | |
args: --release --out dist ${{ matrix.platform.maturin-options }} | |
manylinux: ${{ matrix.platform.manylinux }} | |
sccache: "true" | |
before-script-linux: ${{ matrix.platform.before-script }} | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-linux-${{ matrix.platform.target }} | |
path: cli/dist | |
if-no-files-found: error | |
windows: | |
needs: pre_job | |
if: needs.pre_job.outputs.should_skip != 'true' || startsWith(github.ref, 'refs/tags/') | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: windows-latest | |
target: x64 | |
- runner: windows-latest | |
target: x86 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.platform.target }} | |
working-directory: cli | |
args: --release --out dist | |
sccache: "true" | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-windows-${{ matrix.platform.target }} | |
path: cli/dist | |
if-no-files-found: error | |
macos: | |
needs: pre_job | |
if: needs.pre_job.outputs.should_skip != 'true' || startsWith(github.ref, 'refs/tags/') | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: macos-12 | |
target: x86_64 | |
- runner: macos-14 | |
target: aarch64 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.platform.target }} | |
working-directory: cli | |
args: --release --out dist | |
sccache: "true" | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-macos-${{ matrix.platform.target }} | |
path: cli/dist | |
if-no-files-found: error | |
sdist: | |
needs: pre_job | |
if: needs.pre_job.outputs.should_skip != 'true' || startsWith(github.ref, 'refs/tags/') | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build sdist | |
uses: PyO3/maturin-action@v1 | |
with: | |
command: sdist | |
working-directory: cli | |
args: --out dist | |
- name: Upload sdist | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-sdist | |
path: cli/dist | |
if-no-files-found: error | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
contents: write | |
if: "startsWith(github.ref, 'refs/tags/')" | |
needs: [linux, windows, macos, sdist] | |
steps: | |
- uses: actions/download-artifact@v4 | |
- name: Publish to PyPI | |
uses: PyO3/maturin-action@v1 | |
with: | |
command: upload | |
args: --non-interactive --skip-existing wheels-*/* |