additional testing #8
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 was originally autogenerated by maturin v1.5.0 | |
name: CI | |
on: | |
pull_request: | |
branches: | |
- default | |
push: | |
branches: | |
- default | |
permissions: | |
contents: read | |
jobs: | |
#----------------------------------------------------------------------------- | |
build-linux: | |
strategy: | |
matrix: | |
target: [x86_64, x86, aarch64, armv7, s390x, ppc64le] | |
name: Build & Test Python / Linux / ${{ matrix.target }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist --find-interpreter | |
sccache: 'true' | |
manylinux: auto | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-linux-${{ matrix.target }} | |
path: dist | |
- name: pytest | |
if: ${{ startsWith(matrix.target, 'x86_64') }} | |
shell: bash | |
run: | | |
set -e | |
pip install xensieve --find-links dist --force-reinstall | |
pip install pytest | |
pytest | |
# - name: pytest | |
# if: ${{ !startsWith(matrix.target, 'x86') && matrix.target != 'ppc64' }} | |
# uses: uraimo/[email protected] | |
# with: | |
# arch: ${{ matrix.target }} | |
# distro: ubuntu22.04 | |
# githubToken: ${{ github.token }} | |
# install: | | |
# apt-get update | |
# apt-get install -y --no-install-recommends python3 python3-pip | |
# pip3 install -U pip pytest | |
# run: | | |
# set -e | |
# pip3 install xensieve --find-links dist --force-reinstall | |
# pytest | |
#----------------------------------------------------------------------------- | |
build-windows: | |
strategy: | |
matrix: | |
target: [x64, x86] | |
name: Build & Test Python / Windows / ${{ matrix.target }} | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: ${{ 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 | |
- name: pytest | |
if: ${{ !startsWith(matrix.target, 'aarch64') }} | |
shell: bash | |
run: | | |
set -e | |
pip install xensieve --find-links dist --force-reinstall | |
pip install pytest | |
pytest | |
#----------------------------------------------------------------------------- | |
build-macos: | |
strategy: | |
matrix: | |
target: [x86_64, aarch64] | |
name: Build & Test Python / MacOS / ${{ matrix.target }} | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- 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-macos-${{ matrix.target }} | |
path: dist | |
- name: pytest | |
if: ${{ !startsWith(matrix.target, 'aarch64') }} | |
shell: bash | |
run: | | |
set -e | |
pip install xensieve --find-links dist --force-reinstall | |
pip install pytest | |
pytest | |
#----------------------------------------------------------------------------- | |
test-rust: | |
strategy: | |
matrix: | |
os: [ubuntu-latest,] | |
rust: ["1.60.0", stable] | |
name: Test Rust / ${{ matrix.os }} / Rust ${{ matrix.rust }} | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust | |
run: rustup install --no-self-update ${{ matrix.rust }} && rustup default ${{ matrix.rust }} | |
- name: Build | |
run: cargo build --verbose | |
- name: Run tests | |
run: cargo test --verbose | |
#----------------------------------------------------------------------------- | |
coverage: | |
name: Coverage | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust | |
run: | | |
rustup install --no-self-update nightly && rustup default nightly | |
rustup component add llvm-tools-preview | |
- name: Configure cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry | |
target/ | |
key: coverage-${{ hashFiles('**/Cargo.lock') }} | |
- name: Conditionally install grcov | |
run: | | |
if ! command -v grcov &> /dev/null | |
then | |
cargo install grcov | |
fi | |
- name: Build | |
env: | |
RUSTFLAGS: -Cinstrument-coverage | |
run: cargo build | |
- name: Test | |
env: | |
LLVM_PROFILE_FILE: grcov-%p-%m.profraw | |
RUSTFLAGS: -Cinstrument-coverage | |
run: cargo test | |
- name: Generate coverage | |
run: | | |
grcov . -s . --binary-path ./target/debug/ -t lcov --branch --ignore-not-existing --excl-line cov-excl-line -o coverage.lcov | |
- name: Upload coverage reports to Codecov | |
uses: codecov/[email protected] | |
with: | |
token: abf0edb1-8bfc-4fd7-97a7-cef513975eae | |
files: coverage.lcov | |
slug: flexatone/xensieve-py | |
#----------------------------------------------------------------------------- | |
sdist: | |
runs-on: ubuntu-latest | |
name: Build Source | |
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: wheels-sdist | |
path: dist | |
#----------------------------------------------------------------------------- | |
quality: | |
name: Quality | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust | |
run: rustup install --no-self-update stable && rustup default stable | |
- name: Check formatting | |
run: | | |
rustup component add rustfmt | |
cargo fmt -- --check | |
- name: Lint with Clippy | |
run: | | |
rustup component add clippy | |
cargo clippy -- -D warnings | |
#----------------------------------------------------------------------------- | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
if: "startsWith(github.ref, 'refs/tags/')" | |
needs: [build-linux, build-windows, build-macos, sdist, test-rust, quality] | |
steps: | |
- uses: actions/download-artifact@v4 | |
- name: Publish to PyPI | |
uses: PyO3/maturin-action@v1 | |
env: | |
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} | |
with: | |
command: upload | |
args: --non-interactive --skip-existing wheels-*/* |