name: CI
on:
push:
branches:
- master
pull_request:
permissions:
contents: read
jobs:
verify:
name: Verify (Rust ${{ matrix.toolchain }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
toolchain:
- "1.85.0"
- stable
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain }}
components: rustfmt, clippy
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2
- name: Check formatting
if: matrix.toolchain == 'stable'
run: cargo fmt --all -- --check
- name: Check compilation
run: cargo check --all-targets --locked
- name: Run Clippy
run: cargo clippy --all-targets --all-features --locked -- -D warnings
- name: Check public Rustdoc
if: matrix.toolchain == 'stable'
run: cargo rustdoc --lib --locked -- -D missing_docs
- name: Run tests
run: cargo test --locked
- name: Check publish package
if: matrix.toolchain == 'stable'
run: cargo publish --dry-run --locked