Experiment: adjust CI jobs to externally collect stats #61
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: Rust - Continuous Integration | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
# Disable running jobs on earlier commits. | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
check: | |
name: Build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Set up Cargo cache | |
uses: actions/cache@v4 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
key: ${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-${{ github.job }}- | |
- name: Build (default features) | |
run: cargo build --workspace | |
bench-compile: | |
name: Run Compile Benchmarks | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Set up Cargo cache | |
uses: actions/cache@v4 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
key: ${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-${{ github.job }}- | |
- name: System Information | |
run: lscpu | |
- name: Install Cargo Criterion (tool) | |
run: cargo install cargo-criterion || true | |
- name: Compile (--profile bench) | |
run: cargo build --benches --profile bench | |
- name: Run Compilation Benches (--profile bench) | |
run: cargo criterion --bench criterion --message-format=json compile/ > out.json | |
- name: Print JSON Output | |
run: cat out.json | |
bench-execute: | |
name: Run Execution Benchmarks | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Set up Cargo cache | |
uses: actions/cache@v4 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
key: ${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-${{ github.job }}- | |
- name: System Information | |
run: lscpu | |
- name: Install Cargo Criterion (tool) | |
run: cargo install cargo-criterion || true | |
- name: Compile (--profile bench) | |
run: cargo build --benches --profile bench | |
- name: Run Execution Benches (--profile bench) | |
run: cargo criterion --bench criterion --message-format=json execute/ > out.json | |
- name: Print JSON Output | |
run: cat out.json | |
coremark: | |
name: Run Coremark | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Set up Cargo cache | |
uses: actions/cache@v4 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
key: ${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-${{ github.job }}- | |
- name: System Information | |
run: lscpu | |
- name: Compile (--profile bench) | |
run: cargo build --bin coremark --profile bench | |
- name: Run Coremark (--profile bench) | |
run: cargo run --bin coremark --profile bench | |
fmt: | |
name: Formatting | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: rustfmt | |
- name: Formatting | |
run: cargo fmt --all -- --check | |
doc: | |
name: Documentation | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rust-docs, rust-src | |
- name: Set up Cargo cache | |
uses: actions/cache@v4 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
key: ${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-${{ github.job }}- | |
- name: Check Docs | |
env: | |
RUSTDOCFLAGS: "-D warnings" | |
run: cargo doc --workspace --all-features --no-deps --document-private-items | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: clippy | |
- name: Set up Cargo cache | |
uses: actions/cache@v4 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
key: ${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-${{ github.job }}- | |
- name: Checkout Submodules | |
run: git submodule update --init --recursive | |
- name: Clippy (all features) | |
run: cargo clippy --workspace --all-features -- -D warnings |