name: CI on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build-and-test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: submodules: recursive - name: Install Rust nightly uses: dtolnay/rust-toolchain@nightly with: components: clippy, rustfmt - name: Cache cargo dependencies uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo- - name: Build run: cargo build --all-targets - name: Clippy (deny warnings) run: cargo clippy --workspace --all-targets --all-features -- -D warnings - name: rustfmt (check only) run: cargo fmt --all --check - name: Run tests run: cargo test --all