name: CI
permissions:
contents: read
id-token: write
on:
push:
branches: ["**"]
pull_request:
branches: ["**"]
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: clippy, rustfmt
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-ubuntu
- run: cargo fmt --all -- --check
- run: cargo clippy --all-targets --all-features -- -D warnings
wasm:
name: WASM
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-ubuntu
- run: cargo build --target wasm32-unknown-unknown --features std
coverage:
name: Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: llvm-tools-preview
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-ubuntu
- uses: taiki-e/install-action@cargo-llvm-cov
- run: cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info
- uses: codecov/codecov-action@v4
with:
use_oidc: true
fail_ci_if_error: true
typos:
name: Typos
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-ubuntu
- uses: crate-ci/typos@master
audit:
name: Security Audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-ubuntu
- name: Generate Lockfile
run: cargo generate-lockfile
- uses: rustsec/audit-check@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
unused-deps:
name: Unused Dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-ubuntu
- uses: taiki-e/install-action@cargo-machete
- run: cargo machete
feature-checks:
name: Features
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-ubuntu
- uses: taiki-e/install-action@cargo-hack
- run: cargo hack check --each-feature --no-dev-deps
- run: cargo hack check --feature-powerset --no-dev-deps
test:
name: Test
uses: ./.github/workflows/test.yml