name: build
on:
pull_request:
branches:
- main
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: {}
jobs:
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with:
persist-credentials: false
- run: rustup component add rustfmt
- run: cargo fmt -- --check
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with:
persist-credentials: false
- run: rustup component add clippy
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 - run: cargo clippy --all-targets -- -D warnings -D clippy::all
- run: cargo clippy --all-targets --features serde -- -D warnings -D clippy::all
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with:
submodules: true
persist-credentials: false
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 - run: cargo test --all-features
test_msv:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with:
submodules: true
persist-credentials: false
- run: rustup override set 1.87.0
- run: rustup toolchain install nightly
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 - run: cargo +nightly update -Z direct-minimal-versions
env:
CARGO_RESOLVER_INCOMPATIBLE_RUST_VERSIONS: fallback
- run: cargo test
test_miri:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with:
submodules: true
persist-credentials: false
- run: rustup override set nightly
- run: rustup component add miri
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 - run: cargo +nightly update -Z direct-minimal-versions
env:
CARGO_RESOLVER_INCOMPATIBLE_RUST_VERSIONS: fallback
- run: cargo test
rustdoc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with:
persist-credentials: false
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 - run: cargo doc --all-features --no-deps
env:
RUSTDOCFLAGS: -D warnings
deny:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with:
persist-credentials: false
- uses: taiki-e/install-action@16b05812d776ae1dfaabc8277e421fb6d2506419 with: { tool: cargo-deny }
- run: cargo deny check
semver_checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with:
persist-credentials: false
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 - uses: taiki-e/install-action@16b05812d776ae1dfaabc8277e421fb6d2506419 with: { tool: cargo-semver-checks }
- run: cargo semver-checks check-release
typos:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with:
persist-credentials: false
- uses: taiki-e/install-action@16b05812d776ae1dfaabc8277e421fb6d2506419 with: { tool: typos-cli }
- run: typos
codspeed:
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with:
submodules: true
persist-credentials: false
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 - uses: taiki-e/install-action@16b05812d776ae1dfaabc8277e421fb6d2506419 with: { tool: cargo-codspeed }
- run: cargo codspeed build
- uses: CodSpeedHQ/action@a4a36bb07c0638b0b4ca52bf1f3dad1b4289e52f with:
run: cargo codspeed run
mode: simulation
codecov:
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with:
submodules: true
persist-credentials: false
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 - uses: taiki-e/install-action@16b05812d776ae1dfaabc8277e421fb6d2506419 with: { tool: cargo-llvm-cov }
- run: cargo llvm-cov --all-features --codecov --output-path codecov.json
- uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f with:
files: codecov.json
flags: rust
fail_ci_if_error: true
use_oidc: true
zizmor:
runs-on: ubuntu-latest
permissions:
security-events: write
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with:
persist-credentials: false
- uses: zizmorcore/zizmor-action@192e21d79ab29983730a13d1382995c2307fbcaa