Skip to content

Merge pull request #75 from vlaci/black-to-ruff #325

Merge pull request #75 from vlaci/black-to-ruff

Merge pull request #75 from vlaci/black-to-ruff #325

Workflow file for this run

# This file is autogenerated by maturin v0.14.17
# To update, run
#
# maturin generate-ci github
#
name: CI
on:
push:
branches:
- main
- master
tags:
- "*"
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }}
cancel-in-progress: true
jobs:
Nix:
strategy:
matrix:
include:
- os: ubuntu-latest
arch: x86_64-linux
- os: ubuntu-latest
arch: aarch64-linux
- os: macos-12
arch: x86_64-darwin
name: Build Nix - ${{ matrix.arch }}.${{ matrix.os }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v30
- uses: cachix/cachix-action@v15
with:
name: lzallright
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Setup emulation
if: ${{ matrix.arch == 'aarch64-linux' }}
run: |
sudo apt update
sudo apt install -q -y qemu-system-aarch64 qemu-efi binfmt-support qemu-user-static
mkdir -p ~/.config/nix
echo "system-features = aarch64-linux arm-linux" | sudo tee -a /etc/nix/nix.conf
- name: Nix Flake checks
run: |
nix flake check \
--keep-going \
--print-build-logs \
--option system ${{ matrix.arch }} \
--extra-platforms ${{ matrix.arch }}
- name: Code coverage
if: ${{ matrix.arch == 'x86_64-linux' }}
run: |
nix build .#checks.${{ matrix.arch }}.test-coverage -o cargo-test
nix build .#checks.${{ matrix.arch }}.pytest-coverage -o pytest
- uses: codecov/codecov-action@v5
if: ${{ matrix.arch == 'x86_64-linux' }}
with:
flags: cargo-test
files: cargo-test/coverage.codecov
token: ${{ secrets.CODECOV_TOKEN }}
- uses: codecov/codecov-action@v5
if: ${{ matrix.arch == 'x86_64-linux' }}
with:
flags: pytest
files: pytest/coverage.codecov
token: ${{ secrets.CODECOV_TOKEN }}
Linux:
needs: [Nix]
runs-on: ubuntu-latest
name: "Linux (${{ matrix.target }}.${{ matrix.tag }})"
strategy:
matrix:
include:
- target: x86_64
tag: manylinux2014
container: quay.io/pypa/manylinux2014_x86_64:latest
- target: x86
container: quay.io/pypa/manylinux2014_i686:latest
tag: manylinux2014
- target: aarch64
container: quay.io/pypa/manylinux2014_aarch64:latest
cross: aarch64
tag: manylinux2014
- target: x86_64
container: quay.io/pypa/musllinux_1_1_x86_64:latest
tag: musllinux_1_1
before-script: |
ln -snf /usr/bin/g++ /usr/bin/x86_64-linux-gnu-g++
- target: aarch64
container: quay.io/pypa/musllinux_1_1_aarch64:latest
cross: aarch64
tag: musllinux_1_1
before-script: |
ln -snf /usr/bin/g++ /usr/bin/aarch64-linux-gnu-g++
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: cache rust
uses: Swatinem/rust-cache@v2
with:
key: wheel-linux-${{ matrix.target }}-${{ matrix.tag }}
- name: setup emulation
if: ${{ matrix.cross }}
run: |
sudo apt update
sudo apt install -q -y qemu-system-${{ matrix.cross }} qemu-efi binfmt-support qemu-user-static
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
container: ${{ matrix.container }}
before-script-linux: ${{ matrix.before-script }}
args: --release --out dist --find-interpreter
sccache: ${{ matrix.target == 'musllinux_1_1' }}
docker-options: -e CARGO_NET_GIT_FETCH_WITH_CLI=true
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.target }}-${{ matrix.tag }}
path: dist
- name: Test wheels
run: |
cat << EOF | docker run -v $PWD:/usr/src -i ${{ matrix.container }} sh -ex -
cd /usr/src
curl -sSL https://raw.githubusercontent.com/pdm-project/pdm/main/install-pdm.py | python3.10 -
export PATH=/root/.local/bin:$PATH
pdm sync -d --no-self -G test
pdm run python -m ensurepip
pdm run python -m pip install dist/*.whl
pdm pytest
EOF
Windows:
needs: [Nix]
runs-on: windows-latest
strategy:
matrix:
target: [x64, x86]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"
architecture: ${{ matrix.target }}
- name: cache rust
uses: Swatinem/rust-cache@v2
with:
key: wheel-windows-${{ matrix.target }}
- 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
- uses: pdm-project/setup-pdm@v4
name: Setup PDM
- name: Test wheels
if: ${{ matrix.target == 'x64' }}
run: |
pdm sync -d --no-self -G test
pdm run python -m ensurepip
pdm run python -m pip install (get-item .\dist\*.whl).FullName
pdm pytest
MacOS:
needs: [Nix]
runs-on: macos-12
env:
MACOSX_DEPLOYMENT_TARGET: "10.9"
strategy:
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: cache rust
uses: Swatinem/rust-cache@v2
with:
key: wheel-macos-${{ matrix.target }}
- 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-${{ matrix.target }}
path: dist
- uses: pdm-project/setup-pdm@v4
name: Setup PDM
- name: Test wheels
if: ${{ matrix.target == 'x86_64' }}
run: |
pdm sync -d --no-self -G test
pdm run python -m ensurepip
pdm run python -m pip install dist/*.whl
pdm pytest
sdist:
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
release:
name: Release
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
needs: [Nix, Linux, Windows, MacOS, sdist]
steps:
- uses: actions/download-artifact@v4
with:
merge-multiple: true
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
with:
command: upload
args: --skip-existing *