name: Rust lint and build on: [push, pull_request] jobs: ci: name: ${{ matrix.component }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - component: CLI dir: . - component: Server dir: server defaults: run: working-directory: ${{ matrix.dir }} steps: - name: Checkout uses: actions/checkout@v4 - name: Configure Cargo Cache uses: actions/cache@v5 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo- - name: Install Rust uses: actions-rust-lang/setup-rust-toolchain@v1 with: components: rustfmt, clippy - name: Rustfmt run: cargo fmt --all -- --check - name: Check run: cargo check - name: Clippy run: cargo clippy -- -D warnings - name: Test run: cargo test - name: Build run: cargo build