Only run benchmarks for PRs that modify code #636
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
# This file is adapted from the generated workflow from maturin v1.5.0 | |
# To update, run | |
# | |
# maturin generate-ci --pytest github | |
# | |
name: Python | |
on: | |
push: | |
branches: | |
- main | |
- master | |
tags: | |
- '*' | |
pull_request: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
jobs: | |
get-version: | |
runs-on: ubuntu-latest | |
outputs: | |
version: ${{ steps.genversion.outputs.version }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: "0" | |
- name: Generate package version from Git tag | |
id: genversion | |
run: | | |
echo "version=$(git describe --tags --always --match=v* | sed 's/^v//' | cut -d- -f1,2)" >> "$GITHUB_OUTPUT" | |
linux: | |
runs-on: ubuntu-latest | |
needs: get-version | |
strategy: | |
matrix: | |
target: [x86_64, x86, aarch64, armv7, s390x, ppc64le] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- uses: taiki-e/cache-cargo-install-action@v1 | |
with: | |
tool: cargo-edit | |
- name: Set package version | |
env: | |
VERSION: ${{ needs.get-version.outputs.version }} | |
run: | | |
cargo set-version "${VERSION}" | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist --find-interpreter | |
sccache: 'true' | |
manylinux: auto | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-linux-${{ matrix.target }} | |
path: dist | |
- name: pytest | |
if: ${{ startsWith(matrix.target, 'x86_64') }} | |
shell: bash | |
run: | | |
set -e | |
pip install reclass-rs --find-links dist --force-reinstall | |
pip install pytest | |
pytest | |
- name: pytest | |
if: ${{ !startsWith(matrix.target, 'x86') && matrix.target != 'ppc64' }} | |
uses: uraimo/[email protected] | |
with: | |
arch: ${{ matrix.target }} | |
distro: ubuntu22.04 | |
githubToken: ${{ github.token }} | |
install: | | |
apt-get update | |
apt-get install -y --no-install-recommends python3 python3-pip | |
pip3 install -U pip pytest | |
run: | | |
set -e | |
pip3 install reclass-rs --find-links dist --force-reinstall | |
pytest | |
windows: | |
runs-on: windows-latest | |
needs: get-version | |
strategy: | |
matrix: | |
target: [x64, x86] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: ${{ matrix.target }} | |
- uses: taiki-e/cache-cargo-install-action@v1 | |
with: | |
tool: cargo-edit | |
- name: Set package version | |
env: | |
VERSION: ${{ needs.get-version.outputs.version }} | |
run: | | |
cargo set-version "$env:VERSION" | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist --find-interpreter | |
sccache: 'true' | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-windows-${{ matrix.target }} | |
path: dist | |
- name: pytest | |
if: ${{ !startsWith(matrix.target, 'aarch64') }} | |
shell: bash | |
run: | | |
set -e | |
pip install reclass-rs --find-links dist --force-reinstall | |
pip install pytest | |
pytest | |
macos: | |
runs-on: macos-latest | |
needs: get-version | |
strategy: | |
matrix: | |
target: [x86_64, aarch64] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- uses: taiki-e/cache-cargo-install-action@v1 | |
with: | |
tool: cargo-edit | |
- name: Set package version | |
env: | |
VERSION: ${{ needs.get-version.outputs.version }} | |
run: | | |
cargo set-version "${VERSION}" | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist --find-interpreter | |
sccache: 'true' | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-macos-${{ matrix.target }} | |
path: dist | |
- name: pytest | |
if: ${{ !startsWith(matrix.target, 'aarch64') }} | |
shell: bash | |
run: | | |
set -e | |
pip install reclass-rs --find-links dist --force-reinstall | |
pip install pytest | |
pytest | |
sdist: | |
runs-on: ubuntu-latest | |
needs: get-version | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: taiki-e/cache-cargo-install-action@v1 | |
with: | |
tool: cargo-edit | |
- name: Set package version | |
env: | |
VERSION: ${{ needs.get-version.outputs.version }} | |
run: | | |
cargo set-version "${VERSION}" | |
- name: Build sdist | |
uses: PyO3/maturin-action@v1 | |
with: | |
command: sdist | |
args: --out dist | |
- name: Upload sdist | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-sdist | |
path: dist | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
if: "startsWith(github.ref, 'refs/tags/v')" | |
needs: [linux, windows, macos, sdist] | |
steps: | |
- uses: actions/download-artifact@v4 | |
- name: Publish to PyPI | |
uses: PyO3/maturin-action@v1 | |
env: | |
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} | |
with: | |
command: upload | |
args: --non-interactive --skip-existing wheels-*/* |