shard rust unit tests on ci #2448
Workflow file for this run
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
on: | |
pull_request: | |
paths: | |
- "benchmarks/**" | |
- "ironfish-mpc/**" | |
- "ironfish-phase2/**" | |
- "ironfish-rust/**" | |
- "ironfish-rust-nodejs/**" | |
- "ironfish-zkp/**" | |
- "rust-toolchain" | |
- ".github/workflows/rust*" | |
- ".cargo/**" | |
- "Cargo*" | |
push: | |
paths: | |
- "benchmarks/**" | |
- "ironfish-mpc/**" | |
- "ironfish-phase2/**" | |
- "ironfish-rust/**" | |
- "ironfish-rust-nodejs/**" | |
- "ironfish-zkp/**" | |
- "rust-toolchain" | |
- ".github/workflows/rust*" | |
- ".cargo/**" | |
- "Cargo*" | |
name: Rust CI | |
jobs: | |
rust_lint: | |
name: Lint Rust | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache Rust | |
uses: Swatinem/rust-cache@v2 | |
with: | |
save-if: false | |
shared-key: base | |
- name: Install Cargo tools | |
run: | | |
rustup component add rustfmt clippy | |
- name: Check that cargo lockfile is up to date | |
run: | | |
cargo check --locked --all-targets | |
# Note: ironfish-zkp is does not need this due to different licensing | |
- name: Check for license headers for ironfish-rust | |
run: ./ci/lintHeaders.sh ./ironfish-rust/src *.rs | |
- name: Check for license headers for ironfish-rust-nodejs | |
run: ./ci/lintHeaders.sh ./ironfish-rust-nodejs/src *.rs | |
- name: "`cargo fmt` check on ironfish-rust" | |
run: | | |
cargo fmt --all -- --check | |
- name: "Clippy check on ironfish-rust" | |
run: | | |
cargo clippy --all-targets -- -D warnings | |
cargo_vet: | |
name: Vet Dependencies | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache Rust | |
uses: Swatinem/rust-cache@v2 | |
with: | |
save-if: false | |
shared-key: base | |
- name: Install cargo-vet | |
run: | | |
cargo install --locked cargo-vet | |
- name: Vet dependencies | |
run: | | |
cargo vet | |
ironfish_rust: | |
name: Test ironfish-rust | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
shard: [1/2, 2/2] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: install cargo-llvm-cov | |
uses: taiki-e/install-action@cargo-llvm-cov | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
- name: Clean coverage artifacts | |
run: | | |
cargo llvm-cov clean --workspace | |
- name: Cache Rust | |
uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: base | |
# Run tests to collect code coverage | |
- name: Run tests | |
run: | | |
cargo llvm-cov nextest \ | |
--no-clean \ | |
--codecov \ | |
--output-path codecov.json \ | |
--package ironfish \ | |
--release \ | |
--partition count:${{ matrix.shard }} | |
# Upload code coverage to Codecov | |
- name: Upload to codecov.io | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{secrets.CODECOV_TOKEN}} | |
flags: ironfish-rust | |
ironfish_zkp: | |
name: Test ironfish-zkp | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache Rust | |
uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: zkp | |
- name: install cargo-llvm-cov | |
uses: taiki-e/install-action@cargo-llvm-cov | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
# Run tests to collect code coverage | |
- name: Run tests | |
run: | | |
cargo llvm-cov nextest \ | |
--codecov \ | |
--output-path codecov.json \ | |
--package ironfish_zkp \ | |
--release | |
# Upload code coverage to Codecov | |
- name: Upload to codecov.io | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{secrets.CODECOV_TOKEN}} | |
flags: ironfish-zkp |