name: CI
on:
pull_request:
push:
branches:
- main
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
lint-and-unit:
name: Lint and Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup Rust (stable)
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Install just
uses: taiki-e/install-action@just
- name: Cache Rust artifacts
uses: Swatinem/rust-cache@v2
- name: Check formatting
run: just fmt-check
- name: Cargo check (default features)
run: just check
- name: Run clippy (deny warnings)
run: just clippy
- name: Run unit tests
run: just test-unit
- name: Run crate-internal lib tests
run: just test-lib
- name: Run doctests
run: just test-doc
- name: Run deterministic integration subsets
run: just test-integration-subsets
- name: Run CLI foundation tests
run: just test-cli
msrv-check:
name: MSRV Check (1.85.0)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup Rust (1.85.0)
uses: dtolnay/rust-toolchain@stable
with:
toolchain: 1.85.0
- name: Install just
uses: taiki-e/install-action@just
- name: Cache Rust artifacts
uses: Swatinem/rust-cache@v2
- name: Cargo check (all targets/default features)
run: just check
- name: Cargo check (all targets/features)
run: just check-all-features
migration-smoke:
name: Migration Smoke Checks
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup Rust (stable)
uses: dtolnay/rust-toolchain@stable
- name: Install just
uses: taiki-e/install-action@just
- name: Cache Rust artifacts
uses: Swatinem/rust-cache@v2
- name: Validate migration docs structure
run: just check-migration-docs
- name: Run migration smoke tests
run: just test-migration-smoke