name: CI on: push: pull_request: env: CARGO_TERM_COLOR: always permissions: contents: read jobs: build: name: Build runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: step-security/harden-runner@v2 with: egress-policy: audit - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: Install just uses: taiki-e/install-action@just - name: Build run: just build test: name: Test runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: step-security/harden-runner@v2 with: egress-policy: audit - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: Install cargo-nextest uses: taiki-e/install-action@cargo-nextest - name: Install just uses: taiki-e/install-action@just - name: Test run: just test format: name: Format runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: step-security/harden-runner@v2 with: egress-policy: audit - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@nightly with: components: rustfmt - name: Install just uses: taiki-e/install-action@just - name: Check formatting run: just check-format clippy: name: Clippy runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: step-security/harden-runner@v2 with: egress-policy: audit - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: components: clippy - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: Install just uses: taiki-e/install-action@just - name: Clippy run: just check-clippy udeps: name: Unused Dependencies runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: step-security/harden-runner@v2 with: egress-policy: audit - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@nightly - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: Install cargo-udeps uses: taiki-e/install-action@cargo-udeps - name: Install just uses: taiki-e/install-action@just - name: Check unused dependencies run: just check-udeps