name: Rust on: push: branches: [main] paths: - "lib/crates/**" - "Cargo.toml" - "Cargo.lock" - ".cargo/**" - "openapi/**" - ".github/workflows/rust.yml" pull_request: branches: [main] paths: - "lib/crates/**" - "Cargo.toml" - "Cargo.lock" - ".cargo/**" - "openapi/**" - ".github/workflows/rust.yml" workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: contents: read env: CARGO_TERM_COLOR: always jobs: fmt: name: Format runs-on: ubuntu-latest steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 with: persist-credentials: false - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable - run: cargo fmt --check --all clippy: name: Clippy runs-on: ubuntu-latest steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 with: persist-credentials: false - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2 with: cache-on-failure: true - run: cargo clippy --workspace -- -D warnings test: name: Test (Linux) runs-on: ubuntu-latest steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 with: persist-credentials: false - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2 with: cache-on-failure: true - uses: taiki-e/install-action@nextest - run: cargo nextest run --workspace test-macos: name: Test (macOS) if: github.event_name == 'workflow_dispatch' runs-on: macos-15 steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 with: persist-credentials: false - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2 with: cache-on-failure: true - uses: taiki-e/install-action@nextest - run: cargo nextest run --workspace