👷 Update integration-test.yml workflow #5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Integration test for Rust | |
on: | |
push: | |
branches: main | |
paths: ['src/**', 'benches/**', 'Cargo.toml', 'Cargo.lock', '.github/workflows/integration-test.yml'] | |
pull_request: | |
branches: main | |
paths: ['src/**', 'benches/**', 'Cargo.toml', 'Cargo.lock', '.github/workflows/integration-test.yml'] | |
env: | |
MOLD_VERSION: 2.4.0 | |
CARGO_TERM_COLOR: always | |
jobs: | |
cargo_fmt: | |
name: Cargo Format | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust nightly | |
uses: dtolnay/rust-toolchain@master | |
id: rust-toolchain | |
with: | |
toolchain: nightly | |
components: rustfmt | |
- name: Install cargo-make | |
uses: taiki-e/install-action@cargo-make | |
- name: Cache Cargo | |
uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: ${{ steps.rust-toolchain.outputs.cachekey }}+${{ runner.os }} | |
- name: Check formatting | |
run: cargo make lint-format | |
- name: Check documentation | |
run: cargo make lint-docs | |
- name: Check typos | |
uses: crate-ci/typos@master | |
- name: Lint dependencies | |
uses: EmbarkStudios/cargo-deny-action@v1 | |
cargo_clippy: | |
name: Cargo Clippy | |
needs: [cargo_fmt] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust nightly | |
uses: dtolnay/rust-toolchain@master | |
id: rust-toolchain | |
with: | |
toolchain: nightly | |
- name: Cache Cargo | |
uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: ${{ steps.rust-toolchain.outputs.cachekey }}+${{ runner.os }} | |
- uses: rui314/setup-mold@v1 | |
with: | |
mold-version: ${{ env.MOLD_VERSION }} | |
- name: Add clippy | |
run: rustup component add clippy | |
- name: Run clippy | |
run: cargo clippy | |
cargo_test: | |
name: Cargo Test | |
needs: [cargo_fmt] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust nightly | |
uses: dtolnay/rust-toolchain@master | |
id: rust-toolchain | |
with: | |
toolchain: nightly | |
- name: Cache Cargo | |
uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: ${{ steps.rust-toolchain.outputs.cachekey }}+${{ runner.os }} | |
- uses: rui314/setup-mold@v1 | |
with: | |
mold-version: ${{ env.MOLD_VERSION }} | |
- name: cargo test | |
run: cargo test | |
check: | |
name: Cargo Check | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust nightly | |
uses: dtolnay/rust-toolchain@master | |
id: rust-toolchain | |
with: | |
toolchain: nightly | |
- name: Install cargo-make | |
uses: taiki-e/install-action@cargo-make | |
- name: Cache Cargo | |
uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: ${{ steps.rust-toolchain.outputs.cachekey }}+${{ runner.os }} | |
- name: Run cargo make check | |
run: cargo make check | |
env: | |
RUST_BACKTRACE: full | |
cargo_mutants: # https://mutants.rs | |
name: Cargo Mutants | |
needs: [cargo_test, cargo_clippy, cargo_fmt] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust nightly | |
uses: dtolnay/rust-toolchain@master | |
id: rust-toolchain | |
with: | |
toolchain: nightly | |
- name: Cache Cargo | |
uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: ${{ steps.rust-toolchain.outputs.cachekey }}+${{ runner.os }} | |
- uses: taiki-e/install-action@v2 | |
name: Install cargo-mutants using install-action | |
with: | |
tool: cargo-mutants | |
- name: Run mutant tests | |
run: cargo mutants -vV --in-place | |
- name: Archive results | |
uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: mutants-out | |
path: mutants.out | |
cargo_coverage: | |
name: Cargo Coverage | |
needs: [cargo_test] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust nightly | |
uses: dtolnay/rust-toolchain@master | |
id: rust-toolchain | |
with: | |
toolchain: nightly | |
components: llvm-tools | |
- name: Cache Cargo | |
uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: ${{ steps.rust-toolchain.outputs.cachekey }}+${{ runner.os }} | |
- name: cargo install cargo-llvm-cov | |
uses: taiki-e/install-action@cargo-llvm-cov | |
- name: cargo llvm-cov | |
run: cargo llvm-cov --all-features --lcov --output-path lcov.info | |
env: | |
CARGO_HUSKY_DONT_INSTALL_HOOKS: true | |
- name: Upload to codecov.io | |
uses: codecov/codecov-action@v4 | |
with: | |
fail_ci_if_error: true | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |