Skip to content

shard rust unit tests on ci #2448

shard rust unit tests on ci

shard rust unit tests on ci #2448

Workflow file for this run

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