Skip to content

build: add license and other stuff #625

build: add license and other stuff

build: add license and other stuff #625

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened]
env:
MIN_PYTHON_VERSION: "3.8"
defaults:
run:
# Prevents windows runners from running on powershell
shell: bash
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "${{ env.MIN_PYTHON_VERSION }}"
- name: Set up rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Set up rustfmt
run: rustup component add rustfmt
# Maturin requires a venv to be activated, that's why we have to create one here
- name: Create virtualenv
run: |
python -m venv .venv
source .venv/bin/activate
make install-test-requirements
- name: Lint
run: |
source .venv/bin/activate
make lint
check-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Set up rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- run: |
git config user.name github-actions
git config user.email [email protected]
# venv required by maturin
python3 -m venv .venv
source .venv/bin/activate
make install-test-requirements
make install-doc-requirements
# Required for pdoc to be able to import the sources
make dev-install
make doc
# GitHub provides only x86_64 runners, so we cannot test on arm architecture
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
os: ["ubuntu-latest", "macos-14", "windows-latest"]
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Set up rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
# Maturin requires a venv to be activated, that's why we have to create one here
- name: Create virtualenv
env:
BIN: ${{ matrix.os == 'windows-latest' && 'Scripts' || 'bin' }}
run: |
python -m venv .venv
echo "${{ github.workspace }}/.venv/${{ env.BIN }}" >> $GITHUB_PATH
- name: Install dependencies
run: |
echo "PATH IS $PATH"
make install-test-requirements
- name: Test
run: make test-ci
check-wheel-build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
# Only testing the build on the smallest supported Python version
# since we're building abi3 wheels
python-version: ["3.8"]
os: ["ubuntu-latest", "macos-14", "windows-latest"]
architecture: [x86-64, aarch64]
exclude:
- os: windows-latest
architecture: aarch64
steps:
- uses: actions/checkout@v4
- name: Set Rust target
id: target
if: matrix.os != 'windows-latest'
run: |
TARGET=${{ matrix.os == 'macos-14' && (matrix.architecture == 'aarch64' && 'aarch64-apple-darwin' || 'x86_64-apple-darwin') || (matrix.architecture == 'aarch64' && 'aarch64-unknown-linux-gnu' || null) }}
echo "target=$TARGET" >> $GITHUB_OUTPUT
- name: build (fast)
uses: messense/maturin-action@v1
with:
manylinux: auto
command: build
args: "-o dist"
target: ${{ steps.target.outputs.target }}
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: "wheels-${{ matrix.os }}-python-${{ matrix.python-version }}-${{ matrix.architecture }}"
path: dist
check-sdist-build:
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v4
- name: build sdist
uses: messense/maturin-action@v1
with:
manylinux: auto
command: sdist
args: "-o dist"
- name: upload sdist
uses: actions/upload-artifact@v4
with:
name: sdist
path: dist