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@df4cb1c069e1874edd31b4311f1884172cec0e10 - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 - name: Set up compilation cache (sccache)
uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 - name: Install nextest
uses: taiki-e/install-action@0631aa6515c7d545823c67cfae7ef4fc7f490154 with:
tool: nextest
- name: Unit tests
run: cargo ci-test
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 with:
components: clippy
- name: Set up compilation cache (sccache)
uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 - 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@df4cb1c069e1874edd31b4311f1884172cec0e10 - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 - name: Set up compilation cache (sccache)
uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 - name: Install cargo-llvm-cov
uses: taiki-e/install-action@0631aa6515c7d545823c67cfae7ef4fc7f490154 with:
tool: cargo-llvm-cov
- name: Install nextest
uses: taiki-e/install-action@0631aa6515c7d545823c67cfae7ef4fc7f490154 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@fb8b3582c8e4def4969c97caa2f19720cb33a72f 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@df4cb1c069e1874edd31b4311f1884172cec0e10 - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 with:
components: rustfmt
- name: Set up compilation cache (sccache)
uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 - name: Rustfmt check
run: cargo ci-fmt
security:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - name: Install cargo-audit
uses: taiki-e/install-action@0631aa6515c7d545823c67cfae7ef4fc7f490154 with:
tool: cargo-audit
- name: Audit dependencies for known vulnerabilities
run: cargo audit
publish-dry-run:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 - name: Set up compilation cache (sccache)
uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 - name: Package every workspace crate (dry-run)
run: cargo publish --workspace --dry-run --allow-dirty --no-verify
- name: Simulate publish-verify for crates with default-off optional deps
run: cargo check -p fgumi-raw-bam --no-default-features --all-targets
no-default-features-check:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 - name: Set up compilation cache (sccache)
uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 - name: cargo check --workspace --no-default-features --all-targets
run: cargo check --workspace --no-default-features --all-targets