chore(deps): lock file maintenance (#491) #974
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: CI | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- v* | |
pull_request: | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
run-clippy: | |
if: ${{ !startsWith(github.ref, 'refs/tags/') }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- run: cargo +stable clippy --all-targets --all-features -- -Dwarnings -Wclippy::pedantic | |
run-pre-commit: | |
if: ${{ !startsWith(github.ref, 'refs/tags/') }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: astral-sh/setup-uv@v4 | |
- run: uv tool run --from pre-commit@latest --with pre-commit-uv --no-cache --python 3.13 pre-commit run --all-files | |
run-rustfmt: | |
if: ${{ !startsWith(github.ref, 'refs/tags/') }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- run: rustup toolchain install nightly --profile minimal --component rustfmt --no-self-update --allow-downgrade | |
- run: cargo +nightly fmt --check | |
linux: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
target: | |
- x86_64-unknown-linux-gnu | |
- i686-unknown-linux-gnu | |
- aarch64-unknown-linux-gnu | |
- armv7-unknown-linux-gnueabihf | |
- powerpc64le-unknown-linux-gnu | |
- powerpc64-unknown-linux-gnu | |
- s390x-unknown-linux-gnu | |
- x86_64-unknown-linux-musl | |
- i686-unknown-linux-musl | |
- aarch64-unknown-linux-musl | |
- armv7-unknown-linux-musleabihf | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: | | |
3.9 | |
3.10 | |
3.11 | |
3.12 | |
pypy3.9 | |
pypy3.10 | |
3.13 | |
check-latest: true | |
- uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist --interpreter '3.9 3.10 3.11 3.12 3.13 pypy3.9 pypy3.10' | |
sccache: "true" | |
manylinux: auto | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-linux-${{ matrix.target }} | |
path: dist | |
- if: ${{ !startsWith(github.ref, 'refs/tags/') && matrix.target == 'x86_64-unknown-linux-gnu' }} | |
uses: astral-sh/setup-uv@v4 | |
with: | |
enable-cache: true | |
- name: pytest | |
if: ${{ !startsWith(github.ref, 'refs/tags/') && matrix.target == 'x86_64-unknown-linux-gnu' }} | |
run: | | |
set -e | |
uv sync --no-install-project --frozen | |
uv pip install --find-links ../dist --no-index pyromark | |
uv run --no-sync pytest | |
working-directory: ./tests | |
windows: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
include: | |
- target: x86_64-pc-windows-msvc | |
architecture: x64 | |
- target: i686-pc-windows-msvc | |
architecture: x86 | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: | | |
3.9 | |
3.10 | |
3.11 | |
3.12 | |
3.13 | |
architecture: ${{ matrix.architecture }} | |
check-latest: true | |
- uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist --interpreter '3.9 3.10 3.11 3.12 3.13' | |
sccache: "true" | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-windows-${{ matrix.target }} | |
path: dist | |
- if: ${{ !startsWith(github.ref, 'refs/tags/') && matrix.target == 'x86_64-pc-windows-msvc' }} | |
uses: astral-sh/setup-uv@v4 | |
with: | |
enable-cache: true | |
- name: pytest | |
if: ${{ !startsWith(github.ref, 'refs/tags/') && matrix.target == 'x86_64-pc-windows-msvc' }} | |
shell: bash | |
run: | | |
set -e | |
uv sync --no-install-project --frozen | |
uv pip install --find-links ../dist --no-index pyromark | |
uv run --no-sync pytest | |
working-directory: ./tests | |
macos: | |
runs-on: ${{ matrix.runner }} | |
strategy: | |
matrix: | |
include: | |
- runner: macos-13 | |
target: x86_64-apple-darwin | |
- runner: macos-14 | |
target: aarch64-apple-darwin | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: | | |
3.9 | |
3.10 | |
3.11 | |
3.12 | |
pypy3.9 | |
pypy3.10 | |
3.13 | |
check-latest: true | |
- uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist --interpreter '3.9 3.10 3.11 3.12 3.13 pypy3.9 pypy3.10' | |
sccache: "true" | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-macos-${{ matrix.target }} | |
path: dist | |
- if: ${{ !startsWith(github.ref, 'refs/tags/') && matrix.target == 'x86_64-apple-darwin' }} | |
uses: astral-sh/setup-uv@v4 | |
with: | |
enable-cache: true | |
- name: pytest | |
if: ${{ !startsWith(github.ref, 'refs/tags/') && matrix.target == 'x86_64-apple-darwin' }} | |
run: | | |
set -e | |
uv sync --no-install-project --frozen | |
uv pip install --find-links ../dist --no-index pyromark | |
uv run --no-sync pytest | |
working-directory: ./tests | |
sdist: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: PyO3/maturin-action@v1 | |
with: | |
command: sdist | |
args: --out dist | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-sdist | |
path: dist | |
release: | |
runs-on: ubuntu-latest | |
if: ${{ github.repository_owner == 'monosans' && startsWith(github.ref, 'refs/tags/') }} | |
needs: | |
- linux | |
- windows | |
- macos | |
- sdist | |
permissions: | |
id-token: write | |
attestations: write | |
steps: | |
- uses: actions/download-artifact@v4 | |
- uses: actions/attest-build-provenance@v2 | |
with: | |
subject-path: wheels-*/* | |
- uses: PyO3/maturin-action@v1 | |
with: | |
command: upload | |
args: --non-interactive --skip-existing wheels-*/* |