name: CI
on:
push:
branches: [main, "release/**"]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v4
with:
node-version: "lts/*"
- uses: ./.github/actions/setup-rust
with:
components: rustfmt clippy
tools: typos-cli cargo-nextest
cache-key: test
- run: typos
- run: cargo fmt --all -- --check
- run: npx --yes oxfmt@0.40.0 --no-error-on-unmatched-pattern --check "**/*.md" "**/*.toml" "**/*.yml" "**/*.yaml" "!CHANGELOG.md"
- run: cargo clippy --all-targets --all-features -- -D warnings
- run: RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features --locked
- run: cargo nextest run --all --all-features --locked --no-tests pass
- run: cargo test --doc --all-features --locked
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
with:
cache-key: build
- run: cargo build --all --all-features --locked --release
msrv:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Determine MSRV
id: msrv
run: |
rustup update stable && rustup default stable
echo "value=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[0].rust_version')" >> "$GITHUB_OUTPUT"
- uses: ./.github/actions/setup-rust
with:
toolchain: ${{ steps.msrv.outputs.value }}
cache-key: msrv-${{ steps.msrv.outputs.value }}
- run: cargo check --all-features --locked