Skip to content

feat: add to_address filed in bridge api response (#1405) #5405

feat: add to_address filed in bridge api response (#1405)

feat: add to_address filed in bridge api response (#1405) #5405

Workflow file for this run

# This workflow runs the Bats E2E tests for aggkit.
# - On push: uses hardcoded kurtosis-cdk commit
# - On schedule: uses latest kurtosis-cdk main commit with Slack notifications
name: Bats E2E Tests
on:
push:
branches:
- "**"
schedule:
# Run every 24 hours at 00:00 UTC
- cron: "0 0 * * *"
workflow_dispatch: {}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
AGGKIT_REPORT_CHANNEL: "C092K6Z0EUT"
permissions:
packages: write
id-token: write
contents: read
jobs:
get-kurtosis-cdk-commit:
name: Get Kurtosis CDK Commit
runs-on: ubuntu-latest
outputs:
kurtosis-commit: ${{ steps.get-commit.outputs.commit }}
steps:
- name: Get kurtosis-cdk commit based on trigger
id: get-commit
run: |
if [[ "${{ github.event_name }}" == "schedule" ]]; then
# For scheduled runs, get the latest commit
COMMIT=""
for i in {1..3}; do
COMMIT=$(curl -s https://api.github.com/repos/0xPolygon/kurtosis-cdk/commits/main | jq -r '.sha')
if [[ -n "$COMMIT" && "$COMMIT" != "null" ]]; then
echo "Using latest kurtosis-cdk commit: ${COMMIT}"
break
else
echo "Attempt $i: Failed to fetch commit, retrying..."
sleep 2
fi
done
if [[ -z "$COMMIT" || "$COMMIT" == "null" ]]; then
echo "Error: Failed to fetch kurtosis-cdk commit after 3 attempts"
exit 1
fi
else
# For push/workflow_dispatch, use the fixed commit
COMMIT="6949c3d6b31a34908c85c9900d7b333b472b44b2"
echo "Using fixed kurtosis-cdk commit: ${COMMIT}"
fi
echo "commit=${COMMIT}" >> $GITHUB_OUTPUT
build-aggkit-image:
uses: ./.github/workflows/build-aggkit-image.yml
with:
go-version: 1.25.5
docker-image-name: aggkit
read-aggkit-args:
name: Read aggkit args
runs-on: ubuntu-latest
outputs:
# single l2 network (op-succinct)
kurtosis-cdk-args-single-op-succinct: ${{ steps.read-args.outputs.op_succinct_args }}
# single l2 network (op-succinct with aggoracle committee)
kurtosis-cdk-args-single-op-succinct-aggoracle-committee: ${{ steps.read-args.outputs.op_succinct_aggoracle_committee_args }}
# single l2 network (op, pessimistic)
kurtosis-cdk-args-single-op-pessimistic: ${{ steps.read-args.outputs.single_op_chain_pessimistic_args }}
# multi l2 networks
kurtosis-cdk-args-1: ${{ steps.read-args.outputs.kurtosis-cdk-args-1 }}
kurtosis-cdk-args-2: ${{ steps.read-args.outputs.kurtosis-cdk-args-2 }}
kurtosis-cdk-args-3: ${{ steps.read-args.outputs.kurtosis-cdk-args-3 }}
kurtosis-cdk-args-4: ${{ steps.read-args.outputs.kurtosis-cdk-args-4 }}
kurtosis-cdk-args-5: ${{ steps.read-args.outputs.kurtosis-cdk-args-5 }}
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Read kurtosis-cdk-args from file
id: read-args
run: |
BASE_OP=./.github/test_e2e_op_args_base.json
BASE_CDK_ERIGON=./.github/test_e2e_cdk_erigon_args_base.json
# Helper: merge provided JSON files, output to GITHUB_OUTPUT, and pretty print
put_args() {
local name="$1"
shift
local files=("$@")
local content
if [ "${#files[@]}" -eq 0 ]; then
echo "❌ Error: put_args requires at least one JSON file" >&2
exit 1
fi
# Verify that all files exist
for f in "${files[@]}"; do
if [ ! -f "$f" ]; then
echo "❌ Error: JSON file not found: $f" >&2
exit 1
fi
done
content=$(jq -s 'reduce .[] as $item ({}; . * $item)' "${files[@]}" | jq -c .)
echo "${name}=${content}" >> "$GITHUB_OUTPUT"
echo "### $name"
echo "$content" | jq .
}
# single l2 network (op-succinct)
put_args op_succinct_args "$BASE_OP" \
./.github/test_e2e_op_succinct_args_base.json \
./.github/test_e2e_single_chain_op_succinct_args.json
# single l2 network (op-succinct with aggoracle committee)
put_args op_succinct_aggoracle_committee_args "$BASE_OP" \
./.github/test_e2e_op_succinct_args_base.json \
./.github/test_e2e_single_chain_op_succinct_aggoracle_committee_args.json
# single l2 network (op, pessimistic)
put_args single_op_chain_pessimistic_args "$BASE_OP" \
./.github/test_e2e_op_args_chain_1.json
# multi l2 networks
put_args kurtosis-cdk-args-1 "$BASE_OP" \
./.github/test_e2e_op_args_chain_1.json
put_args kurtosis-cdk-args-2 "$BASE_OP" \
./.github/test_e2e_op_args_chain_2.json
put_args kurtosis-cdk-args-3 "$BASE_CDK_ERIGON" \
./.github/test_e2e_cdk_erigon_custom_gas_token.json
put_args kurtosis-cdk-args-4 "$BASE_CDK_ERIGON" \
./.github/test_e2e_cdk_erigon_multi_chains_args_2.json \
./.github/test_e2e_cdk_erigon_custom_gas_token.json
put_args kurtosis-cdk-args-5 "$BASE_CDK_ERIGON" \
./.github/test_e2e_cdk_erigon_multi_chains_args_3.json
build-tools:
name: Build aggsender find imported bridge tool
needs:
- build-aggkit-image
runs-on: amd-runner-2204
steps:
- name: Checkout code
uses: actions/checkout@v5
- name: Install Go
uses: actions/setup-go@v6
with:
go-version: 1.25.5
- name: Build Aggsender Find Imported Bridge
run: make build-tools
- name: Upload Binary
uses: actions/upload-artifact@v4
with:
name: aggsender_find_imported_bridge
path: ./target/aggsender_find_imported_bridge
test-single-l2-network-op-pessimistic:
name: Single L2 chain tests (OP, pessimistic)
needs:
- build-aggkit-image
- build-tools
- read-aggkit-args
- get-kurtosis-cdk-commit
uses: agglayer/e2e/.github/workflows/aggkit-e2e-single-chain.yml@8045a71a369fd2be2aecab6f63039360c6c998f0
secrets: inherit
with:
kurtosis-cdk-ref: ${{ needs.get-kurtosis-cdk-commit.outputs.kurtosis-commit }}
agglayer-e2e-ref: 8045a71a369fd2be2aecab6f63039360c6c998f0
kurtosis-cdk-enclave-name: op
kurtosis-cdk-args: ${{ needs.read-aggkit-args.outputs.kurtosis-cdk-args-single-op-pessimistic }}
test-name: "test-single-l2-network-op-pessimistic"
event-name: ${{ github.event_name }}
aggsender-find-imported-bridge-artifact: aggsender_find_imported_bridge
check-single-l2-network-op-pessimistic-tests-result:
name: Check results for single l2 network (OP, pessimistic)
needs:
- test-single-l2-network-op-pessimistic
runs-on: ubuntu-latest
steps:
- run: exit 1
if: ${{ contains(fromJSON('["failure", "cancelled"]'), needs.test-single-l2-network-op-pessimistic.result) }}
test-single-l2-network-op-succinct:
name: Single L2 chain tests (op-succinct)
needs:
- build-aggkit-image
- build-tools
- read-aggkit-args
- get-kurtosis-cdk-commit
uses: agglayer/e2e/.github/workflows/aggkit-e2e-single-chain.yml@8045a71a369fd2be2aecab6f63039360c6c998f0
secrets: inherit
with:
kurtosis-cdk-ref: ${{ needs.get-kurtosis-cdk-commit.outputs.kurtosis-commit }}
agglayer-e2e-ref: 8045a71a369fd2be2aecab6f63039360c6c998f0 # main
kurtosis-cdk-enclave-name: op
kurtosis-cdk-args: ${{ needs.read-aggkit-args.outputs.kurtosis-cdk-args-single-op-succinct }}
aggsender-find-imported-bridge-artifact: aggsender_find_imported_bridge
test-name: "test-single-l2-network-op-succinct"
event-name: ${{ github.event_name }}
check-single-network-op-succinct-tests-result:
name: Check results for single l2 network (op-succinct)
needs:
- test-single-l2-network-op-succinct
runs-on: ubuntu-latest
steps:
- run: exit 1
if: ${{ contains(fromJSON('["failure", "cancelled"]'), needs.test-single-l2-network-op-succinct.result) }}
test-single-l2-network-op-succinct-aggoracle-committee:
name: Single L2 chain tests (op-succinct with aggoracle committee)
needs:
- build-aggkit-image
- build-tools
- read-aggkit-args
- get-kurtosis-cdk-commit
uses: agglayer/e2e/.github/workflows/aggkit-e2e-single-chain.yml@8045a71a369fd2be2aecab6f63039360c6c998f0
if: always() && github.event_name == 'schedule' && github.ref == 'refs/heads/develop'
secrets: inherit
with:
kurtosis-cdk-ref: ${{ needs.get-kurtosis-cdk-commit.outputs.kurtosis-commit }}
agglayer-e2e-ref: 8045a71a369fd2be2aecab6f63039360c6c998f0
kurtosis-cdk-enclave-name: op
kurtosis-cdk-args: ${{ needs.read-aggkit-args.outputs.kurtosis-cdk-args-single-op-succinct-aggoracle-committee }}
test-name: "test-single-l2-network-op-succinct-aggoracle-committee"
event-name: ${{ github.event_name }}
aggsender-find-imported-bridge-artifact: aggsender_find_imported_bridge
check-single-l2-network-op-succinct-aggoracle-committee-tests-result:
name: Check results for single l2 network (op-succinct with aggoracle committee)
needs:
- test-single-l2-network-op-succinct-aggoracle-committee
runs-on: ubuntu-latest
steps:
- run: exit 1
if: ${{ contains(fromJSON('["failure", "cancelled"]'), needs.test-single-l2-network-op-succinct-aggoracle-committee.result) }}
test-multi-l2-networks-2-chains-op-pessimistic:
name: Multi chains E2E tests (OP, pessimistic, 2 chains)
needs:
- build-aggkit-image
- build-tools
- read-aggkit-args
- get-kurtosis-cdk-commit
uses: agglayer/e2e/.github/workflows/aggkit-e2e-multi-chains.yml@8045a71a369fd2be2aecab6f63039360c6c998f0
secrets: inherit
with:
kurtosis-cdk-ref: ${{ needs.get-kurtosis-cdk-commit.outputs.kurtosis-commit }}
agglayer-e2e-ref: 8045a71a369fd2be2aecab6f63039360c6c998f0
kurtosis-cdk-enclave-name: op
aggsender-find-imported-bridge-artifact: aggsender_find_imported_bridge
kurtosis-cdk-args-1: ${{ needs.read-aggkit-args.outputs.kurtosis-cdk-args-1 }}
kurtosis-cdk-args-2: ${{ needs.read-aggkit-args.outputs.kurtosis-cdk-args-2 }}
check-multi-l2-networks-2-chains-tests-result:
name: Check results for multi l2 networks (OP, pessimistic, 2 chains)
needs:
- test-multi-l2-networks-2-chains-op-pessimistic
runs-on: ubuntu-latest
steps:
- run: exit 1
if: ${{ contains(fromJSON('["failure", "cancelled"]'), needs.test-multi-l2-networks-2-chains-op-pessimistic.result) }}
test-multi-l2-networks-3-chains-cdk-erigon-pessimistic:
name: Multi chains E2E tests (CDK Erigon, pessimistic, 3 chains)
needs:
- build-aggkit-image
- build-tools
- read-aggkit-args
- get-kurtosis-cdk-commit
uses: agglayer/e2e/.github/workflows/aggkit-e2e-multi-chains.yml@8045a71a369fd2be2aecab6f63039360c6c998f0
secrets: inherit
with:
kurtosis-cdk-ref: ${{ needs.get-kurtosis-cdk-commit.outputs.kurtosis-commit }}
agglayer-e2e-ref: 8045a71a369fd2be2aecab6f63039360c6c998f0
kurtosis-cdk-enclave-name: aggkit
aggsender-find-imported-bridge-artifact: aggsender_find_imported_bridge
kurtosis-cdk-args-1: ${{ needs.read-aggkit-args.outputs.kurtosis-cdk-args-3 }}
kurtosis-cdk-args-2: ${{ needs.read-aggkit-args.outputs.kurtosis-cdk-args-4 }}
kurtosis-cdk-args-3: ${{ needs.read-aggkit-args.outputs.kurtosis-cdk-args-5 }}
number-of-chains: 3
check-multi-l2-networks-3-chains-tests-result:
name: Check results for multi l2 networks (CDK Erigon, pessimisstic, 3 chains)
needs:
- test-multi-l2-networks-3-chains-cdk-erigon-pessimistic
runs-on: ubuntu-latest
steps:
- run: exit 1
if: ${{ contains(fromJSON('["failure", "cancelled"]'), needs.test-multi-l2-networks-3-chains-cdk-erigon-pessimistic.result) }}
notify-slack:
name: Notify Slack
needs:
- test-single-l2-network-op-pessimistic
- test-single-l2-network-op-succinct
- test-single-l2-network-op-succinct-aggoracle-committee
- test-multi-l2-networks-2-chains-op-pessimistic
- test-multi-l2-networks-3-chains-cdk-erigon-pessimistic
- get-kurtosis-cdk-commit
runs-on: ubuntu-latest
if: always() && github.event_name == 'schedule' && github.ref == 'refs/heads/develop'
steps:
- name: Send Slack notification
uses: agglayer/gha-notify-generic@v1
with:
slack-bot-token: ${{ secrets.SLACK_APP_TOKEN_AGGLAYER_NOTIFY_GENERIC }}
channel-id: ${{ env.AGGKIT_REPORT_CHANNEL }}
message: |
Daily E2E Tests Report
Kurtosis CDK Commit: `${{ needs.get-kurtosis-cdk-commit.outputs.kurtosis-commit }}`
Test Results:
• Single L2 (OP, pessimistic): ${{ needs.test-single-l2-network-op-pessimistic.result == 'success' && '🟢' || '🔴' }}
• Single L2 (op-succinct): ${{ needs.test-single-l2-network-op-succinct.result == 'success' && '🟢' || '🔴' }}
• Single L2 (op-succinct with aggoracle committee): ${{ needs.test-single-l2-network-op-succinct-aggoracle-committee.result == 'success' && '🟢' || '🔴' }}
• Multi L2 (OP, pessimistic, 2 chains): ${{ needs.test-multi-l2-networks-2-chains-op-pessimistic.result == 'success' && '🟢' || '🔴' }}
• Multi L2 (OP, pessimistic, 3 chains): ${{ needs.test-multi-l2-networks-3-chains-cdk-erigon-pessimistic.result == 'success' && '🟢' || '🔴' }}
<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View Workflow>