name: CI on: pull_request: branches: ["main"] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: check: name: Check runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6 - name: Install nix uses: DeterminateSystems/nix-installer-action@main - name: Setup Nix cache uses: nix-community/cache-nix-action@main with: primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} restore-prefixes-first-match: nix-${{ runner.os }}- - name: Cache Cargo artifacts uses: actions/cache@v5 with: path: | ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}-check restore-keys: | cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}- cargo-${{ runner.os }}- - name: Check formatting run: nix develop -c cargo fmt --check - name: Clippy run: nix develop -c cargo clippy - name: Run tests run: nix develop -c cargo test -- --show-output e2e: name: E2E Tests runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6 - name: Install nix uses: DeterminateSystems/nix-installer-action@main - name: Setup Nix cache uses: nix-community/cache-nix-action@main with: primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} restore-prefixes-first-match: nix-${{ runner.os }}- - name: Cache Cargo artifacts uses: actions/cache@v5 with: path: | ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}-e2e restore-keys: | cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}- cargo-${{ runner.os }}- - name: Run E2E tests run: nix develop -c cargo test --features e2e --test e2e -- --show-output