name: Rust
on:
push:
branches: [main]
jobs:
formatting:
name: Cargo Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: rustfmt
- name: Rustfmt Check
uses: actions-rust-lang/rustfmt@v1
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache ~/.cargo
uses: actions/cache@v4
with:
path: ~/.cargo
key: ${{ runner.os }}-clippy-dotcargo
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-clippy-cargo-build-target
- uses: dtolnay/rust-toolchain@stable
- name: Install musl
run: rustup target add x86_64-unknown-linux-musl
- name: Clippy
run: cargo clippy --release --all-targets --features all
test:
name: Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Install musl target
run: rustup target add x86_64-unknown-linux-musl
- name: Run tests
run: cargo test --all-targets --features all
cargo-deny:
name: Cargo deny
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: EmbarkStudios/cargo-deny-action@v2
audit:
name: Audit Rust Dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache ~/.cargo
uses: actions/cache@v4
with:
path: ~/.cargo
key: ${{ runner.os }}-audit-dotcargo
- uses: actions-rust-lang/audit@v1
name: Audit Rust Dependencies