Skip to content

fix: monorepo docker builds (#6245) #123

fix: monorepo docker builds (#6245)

fix: monorepo docker builds (#6245) #123

Workflow file for this run

name: rust
on:
# Triggers the workflow on pushes to main branch
push:
branches: [main]
# Triggers on pull requests
pull_request:
branches:
- '*'
merge_group:
workflow_dispatch:
concurrency:
group: rust-${{ github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: full
MIN_SUBMITTERCOVERAGE_PERCENTAGE: 1
RUSTC_WRAPPER: sccache
jobs:
submitter-coverage:
runs-on: depot-ubuntu-24.04-8
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- uses: dtolnay/rust-toolchain@stable
- name: Free disk space
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.8
- name: Install cargo-llvm-cov
run: |
cargo install cargo-llvm-cov@0.5.39 --locked
rustup component add llvm-tools-preview
- name: Generate coverage for submitter package
run: cargo llvm-cov --package submitter --json --output-path coverage.json
working-directory: ./rust/main
- name: Check coverage threshold
run: |
COVERAGE=$(cat coverage.json | jq -r '.data[0].totals.lines.percent')
echo "Coverage: $COVERAGE%"
if (( $(echo "$COVERAGE * 100 < $MIN_SUBMITTERCOVERAGE_PERCENTAGE" | bc -l) )); then
echo "Code coverage is below minimum threshold of $MIN_SUBMITTERCOVERAGE_PERCENTAGE percent"
exit 1
fi
working-directory: ./rust/main
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: coverage.json
flags: ./rust/main/submitter
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
test-rs:
runs-on: depot-ubuntu-24.04-8
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- uses: dtolnay/rust-toolchain@stable
- name: Free disk space
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- name: Install mold linker
uses: rui314/setup-mold@v1
with:
mold-version: 2.0.0
make-default: true
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.8
- name: Run tests for main workspace
run: cargo test
working-directory: ./rust/main
- name: Run tests for sealevel workspace
run: cargo test
working-directory: ./rust/sealevel
lint-rs:
runs-on: depot-ubuntu-24.04-8
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
target: wasm32-unknown-unknown
- name: Free disk space
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.8
- name: Check for main workspace
run: cargo check --release --all-features --all-targets
working-directory: ./rust/main
- name: Check for sealevel workspace
run: cargo check --release --all-features --all-targets
working-directory: ./rust/sealevel
- name: Rustfmt for main workspace
run: cargo fmt --all -- --check
working-directory: ./rust/main
- name: Rustfmt for sealevel workspace
run: cargo fmt --all --check
working-directory: ./rust/sealevel
- name: Clippy for main workspace
run: cargo clippy -- -D warnings
working-directory: ./rust/main
- name: Clippy for sealevel workspace
run: cargo clippy -- -D warnings
working-directory: ./rust/sealevel
- name: Setup WASM for main workspace
run: rustup target add wasm32-unknown-unknown
working-directory: ./rust/main
- name: Check WASM for hyperlane-core
run: cargo check --release -p hyperlane-core --features=strum,test-utils --target wasm32-unknown-unknown
working-directory: ./rust/main