Skip to content

Merge pull request #1031 from constantvictory/fix/ci-and-build-issues… #2

Merge pull request #1031 from constantvictory/fix/ci-and-build-issues…

Merge pull request #1031 from constantvictory/fix/ci-and-build-issues… #2

Workflow file for this run

name: Rust CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Build
run: cargo build --verbose
- name: Check test compilation
run: cargo check --tests
# Explicitly verify the test target compiles before running tests.
# This catches syntax errors in #[cfg(test)] mod blocks (e.g. missing
# closing braces) as early as possible and surfaces them as a distinct
# CI step rather than a buried cargo test failure. Closes #884.
- name: Run tests
run: cargo test --verbose
- name: Run clippy
run: cargo clippy -- -D warnings
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install cargo-audit
run: cargo install cargo-audit --locked
- name: Audit dependencies
run: cargo audit --deny warnings
fuzz:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [fuzz_deterministic_hash, fuzz_domain_validator]
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@nightly
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
fuzz/target
key: ${{ runner.os }}-cargo-fuzz-${{ hashFiles('fuzz/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-fuzz-
- name: Install cargo-fuzz
run: cargo install cargo-fuzz --locked
- name: Run fuzz target (${{ matrix.target }})
run: cargo fuzz run ${{ matrix.target }} -- -max_total_time=60
- name: Upload crash artifacts
if: failure()
uses: actions/upload-artifact@v4
with:
name: fuzz-crash-${{ matrix.target }}
path: fuzz/artifacts/${{ matrix.target }}/
if-no-files-found: ignore