feat(infra): USDT OFT warp route deployment + SDK fix for unproxied contracts #25918
Workflow file for this run
This file contains hidden or 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 | |
| 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_LANDERCOVERAGE_PERCENTAGE: 15 | |
| RUSTC_WRAPPER: sccache | |
| jobs: | |
| ts-only: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| skip_rust: ${{ steps.decide.outputs.skip_rust }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Check CI context | |
| id: context | |
| uses: ./.github/actions/ci-context-check | |
| - name: Decide whether to skip rust jobs | |
| id: decide | |
| run: | | |
| echo "Context: ${{ steps.context.outputs.reason }}" | |
| if [[ "${{ steps.context.outputs.should_skip }}" == "true" ]]; then | |
| echo "skip_rust=true" >> $GITHUB_OUTPUT | |
| exit 0 | |
| fi | |
| if [[ "${{ steps.context.outputs.must_run }}" == "true" ]]; then | |
| echo "skip_rust=false" >> $GITHUB_OUTPUT | |
| exit 0 | |
| fi | |
| # Check path changes for PRs | |
| BASE_REF="${{ github.base_ref }}" | |
| if [[ -z "$BASE_REF" ]]; then | |
| BASE_REF="HEAD~1" | |
| else | |
| BASE_REF="origin/$BASE_REF" | |
| fi | |
| if ! CHANGED_FILES=$(git diff --name-only "$BASE_REF"...HEAD); then | |
| echo "::warning::Git diff failed, defaulting to run rust tests" | |
| echo "skip_rust=false" >> $GITHUB_OUTPUT | |
| exit 0 | |
| fi | |
| # Filter out sealevel deployment config paths that don't affect build/tests | |
| RUST_CODE_CHANGES=$(echo "$CHANGED_FILES" | grep -vE '^rust/sealevel/(environments/(mainnet3|testnet4)/|\.vscode/)' || true) | |
| if echo "$RUST_CODE_CHANGES" | grep -qE '^(rust/|\.github/workflows/(rust\.|test\.yml|test-rust)|\.github/actions/)'; then | |
| echo "skip_rust=false" >> $GITHUB_OUTPUT | |
| else | |
| echo "skip_rust=true" >> $GITHUB_OUTPUT | |
| fi | |
| lander-coverage-run: | |
| needs: [ts-only] | |
| if: needs.ts-only.outputs.skip_rust != 'true' | |
| runs-on: depot-ubuntu-24.04-8 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| 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: Setup sccache | |
| uses: ./.github/actions/setup-sccache | |
| - 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 lander package | |
| run: cargo llvm-cov --package lander --features aleo,integration_test --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 < $MIN_LANDERCOVERAGE_PERCENTAGE" | bc -l) )); then | |
| echo "Code coverage is below minimum threshold of $MIN_LANDERCOVERAGE_PERCENTAGE percent" | |
| exit 1 | |
| fi | |
| working-directory: ./rust/main | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| files: coverage.json | |
| flags: ./rust/main/lander | |
| fail_ci_if_error: true | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| test-rs-run: | |
| needs: [ts-only] | |
| if: needs.ts-only.outputs.skip_rust != 'true' | |
| runs-on: depot-ubuntu-24.04-8 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Install system dependencies | |
| run: sudo apt-get update && sudo apt-get install -y libudev-dev | |
| - 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 | |
| - name: Setup sccache | |
| uses: ./.github/actions/setup-sccache | |
| - name: Run tests for main workspace | |
| run: cargo test --all-targets --features aleo,integration_test | |
| working-directory: ./rust/main | |
| - name: Run tests for sealevel workspace | |
| run: cargo test | |
| working-directory: ./rust/sealevel | |
| lint-rs-run: | |
| needs: [ts-only] | |
| if: needs.ts-only.outputs.skip_rust != 'true' | |
| runs-on: depot-ubuntu-24.04-8 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt, clippy | |
| target: wasm32-unknown-unknown | |
| - name: Install system dependencies | |
| run: sudo apt-get update && sudo apt-get install -y libudev-dev | |
| - 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: Setup sccache | |
| uses: ./.github/actions/setup-sccache | |
| - 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: Check Cargo.lock files are up to date | |
| run: | | |
| CHANGES=$(git status -s --ignore-submodules -- rust/main/Cargo.lock rust/sealevel/Cargo.lock) | |
| if [[ ! -z $CHANGES ]]; then | |
| echo "❌ Cargo.lock files are out of sync with Cargo.toml files" | |
| echo "" | |
| echo "$CHANGES" | while read status file; do | |
| echo "::group::$file changes" | |
| git diff "$file" | |
| echo "::endgroup::" | |
| if [[ "$file" == *"main"* ]]; then | |
| echo "- $file needs to be updated" | |
| echo " Run: cd rust/main && cargo build" | |
| elif [[ "$file" == *"sealevel"* ]]; then | |
| echo "- $file needs to be updated" | |
| echo " Run: cd rust/sealevel && cargo build" | |
| fi | |
| done | |
| echo "" | |
| echo "Please commit the updated Cargo.lock file(s)" | |
| exit 1 | |
| fi | |
| - 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 --features aleo,integration_test -- -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 | |
| # Wrapper jobs for required status checks (report success when skipped) | |
| lander-coverage: | |
| runs-on: ubuntu-latest | |
| needs: [lander-coverage-run] | |
| if: always() | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Check lander-coverage status | |
| uses: ./.github/actions/check-job-status | |
| with: | |
| job_name: 'Lander Coverage' | |
| result: ${{ needs.lander-coverage-run.result }} | |
| test-rs: | |
| runs-on: ubuntu-latest | |
| needs: [test-rs-run] | |
| if: always() | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Check test-rs status | |
| uses: ./.github/actions/check-job-status | |
| with: | |
| job_name: 'Rust Tests' | |
| result: ${{ needs.test-rs-run.result }} | |
| lint-rs: | |
| runs-on: ubuntu-latest | |
| needs: [lint-rs-run] | |
| if: always() | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Check lint-rs status | |
| uses: ./.github/actions/check-job-status | |
| with: | |
| job_name: 'Rust Lint' | |
| result: ${{ needs.lint-rs-run.result }} |