Skip to content

1.1.4

1.1.4 #16

Workflow file for this run

name: build-wheels
on:
# Do this when a new release is published
push:
branches: [ main ]
pull_request:
release:
types: [ published ]
jobs:
# Build for manylinux, which allows it to be run on many different Linux platforms
test-linux:
strategy:
matrix:
py-version: ['3.9', '3.10', '3.11', '3.12']
runs-on: ubuntu-latest
steps:
- name: Checkout rustfrc
uses: actions/checkout@v2
# Set up the repository with the Docker container action, which will allow us to build and run a manylinux Docker
# container that will ensure compatibility. See the action repository for more info.
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.py-version }}
# We install poetry as a dependency manager to read the pyproject.toml of our package.
- name: Poetry
run: pipx install poetry==1.8.2
- name: Maturin
uses: taiki-e/install-action@v2
with:
tool: maturin
# poetry update will install all dependencies for our package, as well as maturin, which we use as our build
# back-end
- name: Poetry install
run: poetry install --sync --no-root
working-directory: ${{ github.workspace }}
- name: Activate venv
run: source $(poetry env info --path)/bin/activate
working-directory: ${{ github.workspace }}
- name: maturin develop
run: maturin develop
working-directory: ${{ github.workspace }}
- name: cargo test
run: cargo test
working-directory: ${{ github.workspace }}
- name: poetry pytest
run: poetry run pytest
working-directory: ${{ github.workspace }}
build-macos:
if: ${{ github.event_name == 'release' && github.event.action == 'published' }}
needs: [ test-linux ]
runs-on: macos-latest
strategy:
matrix:
py-version: [ '3.9', '3.10', '3.11', '3.12' ]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.py-version }}
# The x86_64 Rust toolchain is installed on GitHub runners, but since we compile also for Apple Silicon, we also
# need the correct Rust toolchain.
- name: Rustup install aarch64 target
run: rustup target add aarch64-apple-darwin
if: ${{ matrix.target == '--universal2' }}
- name: Build wheels - universal2
uses: PyO3/maturin-action@v1
with:
target: universal2-apple-darwin
args: --release --out dist -i ${{ matrix.py-version }}
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: ${{ github.workspace }}/dist
build-windows:
if: ${{ github.event_name == 'release' && github.event.action == 'published' }}
needs: [ test-linux ]
runs-on: windows-latest
strategy:
matrix:
py-version: ['3.9', '3.10', '3.11', '3.12']
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.py-version }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: x64
args: --release --out dist -i ${{ matrix.py-version }}
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: ${{ github.workspace }}/dist
build-linux:
if: ${{ github.event_name == 'release' && github.event.action == 'published' }}
needs: [ test-linux ]
runs-on: ubuntu-latest
strategy:
matrix:
py-version: [ '3.9', '3.10', '3.11', '3.12' ]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.py-version }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
rust-toolchain: stable
target: x86_64
manylinux: auto
args: --release --out dist -i ${{ matrix.py-version }}
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: ${{ github.workspace }}/dist
wheel-publish:
name: Release
runs-on: ubuntu-latest
needs: [ build-macos, build-windows, build-linux ]
steps:
- uses: actions/download-artifact@v3
with:
name: wheels
- name: Publish to PyPI
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_RUSTFRC_TOKEN }}
uses: PyO3/maturin-action@v1
with:
command: upload
args: --skip-existing *