name: CI
on:
push:
pull_request:
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
jobs:
quality:
name: Format, lint, docs, package
runs-on: ubuntu-24.04
timeout-minutes: 20
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@2c7215f132e9ebf062739d9130488b56d53c060c with:
toolchain: stable
components: rustfmt, clippy
- run: cargo fmt --all -- --check
- run: cargo clippy --locked --all-targets --all-features -- -D warnings
- name: Build docs without warnings
env:
RUSTDOCFLAGS: -D warnings
run: cargo doc --locked --no-deps --all-features
- run: cargo package --locked
test:
name: Test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, windows-2025, macos-15]
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@2c7215f132e9ebf062739d9130488b56d53c060c with:
toolchain: stable
- run: cargo test --locked --all-features
msrv:
name: Rust 1.88
runs-on: ubuntu-24.04
timeout-minutes: 30
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@2c7215f132e9ebf062739d9130488b56d53c060c with:
toolchain: 1.88.0
components: clippy
- run: cargo test --locked --all-features
- run: cargo clippy --locked --all-targets --all-features -- -D warnings
benchmark-smoke:
name: Competitor harness smoke (${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, windows-2025]
defaults:
run:
working-directory: tools/benchmarks
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 with:
persist-credentials: false
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 with:
node-version: 24.15.0
cache: npm
cache-dependency-path: tools/benchmarks/package-lock.json
- uses: dtolnay/rust-toolchain@2c7215f132e9ebf062739d9130488b56d53c060c with:
toolchain: stable
components: rustfmt, clippy
- run: npm ci --ignore-scripts
- run: npm run verify:install
- run: npm test
- run: cargo fmt --manifest-path Cargo.toml -- --check
- run: cargo clippy --locked --manifest-path Cargo.toml --all-targets -- -D warnings
- run: cargo test --locked --manifest-path Cargo.toml --all-targets
- run: npm run build:rust
- run: npm run smoke -- --output results/ci