chore(deps): bump alloy-signer-aws from 1.8.3 to 2.0.0 #2951
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: CI | |
| on: | |
| pull_request: | |
| branches: [main] | |
| push: | |
| branches: [main] | |
| workflow_dispatch: | |
| concurrency: | |
| group: rust-validation-${{ github.head_ref }} | |
| cancel-in-progress: true | |
| env: | |
| RUST_BACKTRACE: full | |
| CARGO_TERM_COLOR: always | |
| IN_CI: "true" | |
| TNT_CORE_PATH: ${{ github.workspace }}/../tnt-core | |
| RUSTFMT_NIGHTLY: nightly-2026-02-24 | |
| jobs: | |
| formatting: | |
| name: Rustfmt | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ./.github/actions/setup-build-env | |
| with: | |
| rust-toolchain: ${{ env.RUSTFMT_NIGHTLY }} | |
| components: rustfmt | |
| cache: "false" | |
| sccache: "false" | |
| foundry: "false" | |
| - name: Check Formatting | |
| run: cargo +${RUSTFMT_NIGHTLY} fmt -- --check | |
| linting: | |
| timeout-minutes: 120 | |
| name: cargo clippy | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ./.github/actions/free-disk-space | |
| - uses: ./.github/actions/setup-build-env | |
| - name: Run Clippy | |
| run: cargo clippy --workspace --tests --examples -- -D warnings | |
| generate-matrix: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| matrix: ${{ steps.set-matrix.outputs.matrix }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ./.github/actions/setup-build-env | |
| with: | |
| cache: "false" | |
| foundry: "false" | |
| - name: Detect changed crates (PRs only) | |
| id: changed | |
| run: | | |
| if [ "${{ github.event_name }}" = "pull_request" ]; then | |
| git fetch origin ${{ github.base_ref }} --depth=1 | |
| CHANGED=$(./scripts/ci/changed-crates.sh origin/${{ github.base_ref }}) | |
| echo "crates=$CHANGED" >> $GITHUB_OUTPUT | |
| echo "Changed crates: $CHANGED" >&2 | |
| else | |
| echo 'crates=[]' >> $GITHUB_OUTPUT | |
| fi | |
| - name: Generate test matrix (grouped) | |
| id: set-matrix | |
| run: | | |
| CHANGED='${{ steps.changed.outputs.crates }}' | |
| # On push to main or if changed-crates returned empty (meaning "test all"), | |
| # test all workspace packages | |
| if [ "${{ github.event_name }}" != "pull_request" ] || [ "$CHANGED" = "[]" ]; then | |
| ALL_PKGS=$(cargo metadata --format-version 1 --no-deps | jq -r '[.packages[] | .name] | sort | .[]') | |
| else | |
| # On PRs, only test changed crates + dependents | |
| ALL_PKGS=$(echo "$CHANGED" | jq -r '.[]' | sort) | |
| if [ -z "$ALL_PKGS" ]; then | |
| echo "No crates to test" | |
| echo 'matrix=[]' >> $GITHUB_OUTPUT | |
| exit 0 | |
| fi | |
| fi | |
| # Serial crates that need test-threads=1 | |
| SERIAL="blueprint-tangle-extra blueprint-client-tangle blueprint-client-evm blueprint-networking blueprint-qos cargo-tangle blueprint-manager" | |
| # Group crates into bundles of ~8 for parallel execution | |
| BUNDLE_SIZE=8 | |
| BUNDLES="[]" | |
| CURRENT_BUNDLE="[]" | |
| COUNT=0 | |
| for pkg in $ALL_PKGS; do | |
| # Serial crates get their own job | |
| if echo "$SERIAL" | grep -qw "$pkg"; then | |
| BUNDLES=$(echo "$BUNDLES" | jq --arg p "$pkg" --arg s "true" '. + [{"packages": [$p], "serial": $s}]') | |
| continue | |
| fi | |
| CURRENT_BUNDLE=$(echo "$CURRENT_BUNDLE" | jq --arg p "$pkg" '. + [$p]') | |
| COUNT=$((COUNT + 1)) | |
| if [ "$COUNT" -ge "$BUNDLE_SIZE" ]; then | |
| BUNDLES=$(echo "$BUNDLES" | jq --argjson b "$CURRENT_BUNDLE" '. + [{"packages": $b, "serial": "false"}]') | |
| CURRENT_BUNDLE="[]" | |
| COUNT=0 | |
| fi | |
| done | |
| # Flush remaining | |
| if [ "$(echo "$CURRENT_BUNDLE" | jq length)" -gt 0 ]; then | |
| BUNDLES=$(echo "$BUNDLES" | jq --argjson b "$CURRENT_BUNDLE" '. + [{"packages": $b, "serial": "false"}]') | |
| fi | |
| echo "Generated $(echo "$BUNDLES" | jq length) test bundles" | |
| echo "matrix=$(echo "$BUNDLES" | jq -c .)" >> $GITHUB_OUTPUT | |
| testing: | |
| needs: [generate-matrix] | |
| if: ${{ needs.generate-matrix.outputs.matrix != '[]' && needs.generate-matrix.outputs.matrix != '' }} | |
| # 90 minutes, not 45: the biggest bundles (cargo-tangle and the | |
| # blueprint-client-core group of 8) take ~46-48 minutes to fresh- | |
| # compile + test on shared GH runners, which hit the old 45min | |
| # ceiling on every cold-cache run (including main's own CI runs | |
| # 24052887535 and 24047749608). Doubling the budget gives worst- | |
| # case runners real headroom without changing the time-to-signal | |
| # on a warm-cache run (which stays well under the old 45min). | |
| timeout-minutes: 90 | |
| # The matrix entries are already parsed JSON objects (we did | |
| # `fromJSON(needs.generate-matrix.outputs.matrix)` in `matrix.bundle` | |
| # below), so `matrix.bundle.packages` is *already* an array. Calling | |
| # `fromJSON()` on it here would error and silently kill the matrix | |
| # fan-out (which is what was happening on main: only 6 jobs ran | |
| # instead of the 6 + ~15 test bundles intended by the rewrite). | |
| name: cargo test (${{ join(matrix.bundle.packages, ', ') }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| bundle: ${{ fromJSON(needs.generate-matrix.outputs.matrix) }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ./.github/actions/free-disk-space | |
| - uses: ./.github/actions/setup-build-env | |
| with: | |
| nextest: "true" | |
| - name: Run tests | |
| run: | | |
| PACKAGES='${{ toJSON(matrix.bundle.packages) }}' | |
| IS_SERIAL='${{ matrix.bundle.serial }}' | |
| PROFILE="ci" | |
| EXTRA_ARGS="" | |
| if [ "$IS_SERIAL" = "true" ]; then | |
| PROFILE="serial" | |
| fi | |
| for PKG in $(echo "$PACKAGES" | jq -r '.[]'); do | |
| echo "=========================================" | |
| echo "Testing: $PKG" | |
| echo "=========================================" | |
| # Check if crate has a lib target (for doc tests) | |
| HAS_LIB=$(cargo metadata --no-deps --format-version 1 | python3 -c " | |
| import json, sys | |
| meta = json.load(sys.stdin) | |
| pkg = next((p for p in meta['packages'] if p['name'] == '$PKG'), None) | |
| if pkg: | |
| has_lib = any(t['kind'] == ['lib'] for t in pkg.get('targets', [])) | |
| print('true' if has_lib else 'false') | |
| else: | |
| print('false') | |
| ") | |
| if [ "$PKG" = "blueprint-manager" ]; then | |
| cargo nextest run --test-threads=1 --no-tests pass --package "$PKG" --profile "$PROFILE" | |
| else | |
| cargo nextest run --no-tests pass --package "$PKG" --profile "$PROFILE" | |
| fi | |
| if [ "$HAS_LIB" = "true" ]; then | |
| cargo test --package "$PKG" --doc | |
| fi | |
| done | |
| integration: | |
| name: Integration Tests | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| env: | |
| RUST_LOG: info | |
| RUN_TNT_E2E: "1" | |
| BLUEPRINT_ANVIL_LOGS: "1" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ./.github/actions/free-disk-space | |
| - uses: ./.github/actions/setup-build-env | |
| - name: Warm up Foundry image | |
| run: docker pull ghcr.io/foundry-rs/foundry:latest | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Tangle integration tests | |
| run: | | |
| cargo test -p blueprint-pricing-engine --features pricing-engine-e2e-tests --test evm_listener -- --nocapture | |
| cargo test -p blueprint-manager --test tangle_runner -- --nocapture | |
| cargo test -p hello-tangle-blueprint --test anvil -- --nocapture | |
| cargo test -p blueprint-client-tangle --test anvil -- --nocapture --test-threads=1 | |
| cargo test -p blueprint-tangle-extra --test anvil_integration -- --nocapture --test-threads=1 | |
| - name: QoS integration tests | |
| run: | | |
| cargo test -p blueprint-qos --test qos_metrics_demo_test -- --nocapture --test-threads=1 | |
| cargo test -p blueprint-qos --test blueprint_integration_test -- --nocapture --test-threads=1 | |
| - name: CLI integration tests | |
| run: | | |
| cargo test -p cargo-tangle --test '*' -- --nocapture --test-threads=1 | |
| - name: Container spawn tests | |
| run: | | |
| cargo test -p blueprint-manager container --lib -- --nocapture --test-threads=1 | |
| cargo test -p blueprint-manager sources --lib -- --nocapture --test-threads=1 | |
| eigenlayer-integration: | |
| name: EigenLayer Integration | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| env: | |
| RUST_LOG: info | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ./.github/actions/free-disk-space | |
| - uses: ./.github/actions/setup-build-env | |
| with: | |
| tnt-core: "false" | |
| - name: Run EigenLayer tests | |
| run: | | |
| cargo test -p blueprint-client-eigenlayer --lib -- --nocapture | |
| cargo test -p blueprint-runner --features eigenlayer --lib -- --nocapture | |
| testnet-smoke-test: | |
| name: Testnet Smoke Test | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| if: github.event_name == 'workflow_dispatch' | |
| env: | |
| RUST_LOG: info | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ./.github/actions/setup-build-env | |
| with: | |
| foundry: "false" | |
| - name: Build CLI | |
| run: cargo build -p cargo-tangle --release | |
| - name: Smoke test | |
| env: | |
| TANGLE_RPC_URL: ${{ secrets.TANGLE_TESTNET_RPC_URL }} | |
| if: env.TANGLE_RPC_URL != '' | |
| run: | | |
| ./target/release/cargo-tangle tangle blueprint list blueprints --network testnet || echo "Testnet query failed (expected if no testnet access)" |