Preparing for 0.2.5 release #337
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 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 * |