name: CI
on:
push:
branches: [main]
pull_request:
env:
CARGO_TERM_COLOR: always
jobs:
test:
strategy:
fail-fast: false
matrix:
include:
- { os: ubuntu-latest, rust: stable, features: default, args: "" }
- { os: macos-latest, rust: stable, features: default, args: "" }
- { os: windows-latest, rust: stable, features: default, args: "" }
- { os: ubuntu-latest, rust: stable, features: all, args: "--all-features" }
- { os: ubuntu-latest, rust: "1.85", features: default, args: "" }
- { os: ubuntu-latest, rust: "1.85", features: all, args: "--all-features" }
runs-on: ${{ matrix.os }}
name: test (${{ matrix.os }}, rust ${{ matrix.rust }}, ${{ matrix.features }})
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - uses: dtolnay/rust-toolchain@fa04a1451ff1842e2626ccb99004d0195b455a88 with:
toolchain: ${{ matrix.rust }}
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 - run: cargo test --locked ${{ matrix.args }}
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - uses: dtolnay/rust-toolchain@fa04a1451ff1842e2626ccb99004d0195b455a88 with:
toolchain: stable
components: clippy
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 - run: cargo clippy --all-targets --all-features --locked -- -D warnings
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - uses: dtolnay/rust-toolchain@fa04a1451ff1842e2626ccb99004d0195b455a88 with:
toolchain: stable
components: rustfmt
- run: cargo fmt --check
- run: ./scripts/check-workflow-pins.sh
rustsec:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - uses: rustsec/audit-check@69366f33c96575abad1ee0dba8212993eecbe998 with:
token: ${{ secrets.GITHUB_TOKEN }}
homepage:
runs-on: ubuntu-latest
defaults:
run:
working-directory: homepage
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 with:
package_json_file: homepage/package.json
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e with:
node-version: "22"
cache: pnpm
cache-dependency-path: homepage/pnpm-lock.yaml
- run: pnpm install --frozen-lockfile
- run: pnpm run audit
- run: pnpm build