name: Check and Test
on:
push:
branches:
- main
pull_request:
env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 - name: Set up compilation cache (sccache)
uses: mozilla-actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad - name: Install nextest
uses: taiki-e/install-action@6ef672efc2b5aabc787a9e94baf4989aa02a97df with:
tool: nextest
- name: Unit tests
run: cargo ci-test
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 with:
components: clippy
- name: Set up compilation cache (sccache)
uses: mozilla-actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad - name: Clippy check
run: cargo ci-lint
coverage:
runs-on: ubuntu-latest
if: github.actor != 'dependabot[bot]'
environment: github-actions
steps:
- name: Checkout code
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 - name: Set up compilation cache (sccache)
uses: mozilla-actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad - name: Install cargo-llvm-cov
uses: taiki-e/install-action@6ef672efc2b5aabc787a9e94baf4989aa02a97df with:
tool: cargo-llvm-cov
- name: Install nextest
uses: taiki-e/install-action@6ef672efc2b5aabc787a9e94baf4989aa02a97df with:
tool: nextest
- name: Generate coverage
run: cargo llvm-cov nextest --features compare,simulate,profile-adjacency --no-tests=pass --lcov --output-path lcov.info
- name: Upload to Codecov
uses: codecov/codecov-action@75cd11691c0faa626561e295848008c8a7dddffe with:
files: lcov.info
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
format:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 with:
components: rustfmt
- name: Set up compilation cache (sccache)
uses: mozilla-actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad - name: Rustfmt check
run: cargo ci-fmt
security:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 - name: Install cargo-audit
uses: taiki-e/install-action@6ef672efc2b5aabc787a9e94baf4989aa02a97df with:
tool: cargo-audit
- name: Audit dependencies for known vulnerabilities
run: cargo audit