name: CI
on:
push:
branches: [main]
merge_group:
pull_request:
env:
CARGO_TERM_COLOR: always
jobs:
cargo-tests:
runs-on: ${{ matrix.os }}
name: Tests (${{ matrix.os }})
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- uses: taiki-e/install-action@just
- uses: taiki-e/install-action@nextest
- name: cargo test
run: just test --locked
cargo-build:
runs-on: ubuntu-latest
name: Build (${{ matrix.toolchain }})
timeout-minutes: 20
continue-on-error: ${{ matrix.toolchain != '1.97.0' }}
strategy:
fail-fast: false
matrix:
toolchain: ["1.97.0", stable, nightly]
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Rust ${{ matrix.toolchain }} toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain }}
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- uses: taiki-e/install-action@just
- name: build
run: just build --locked --all-features
cargo-lint:
runs-on: ubuntu-latest
timeout-minutes: 20
name: Clippy
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
submodules: recursive
- uses: taiki-e/install-action@just
- name: Install Rust stable Clippy toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Install Rust nightly formatting toolchain
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: fmt + lint
run: just lint
cargo-doc:
runs-on: ubuntu-latest
name: Docs (lint + test)
timeout-minutes: 20
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
submodules: recursive
- uses: taiki-e/install-action@just
- name: Install Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: doclint
run: just check-docs
- name: doctest
run: just test-docs
cargo-build-benches:
runs-on: ubuntu-latest
timeout-minutes: 20
name: Build Benchmarks
continue-on-error: true
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
submodules: recursive
- uses: taiki-e/install-action@just
- name: Install Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: build benches
run: cargo bench --no-run --all