From 352a998a5f1707b219fa072c83c8e4aca37e219b Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Thu, 5 Feb 2026 14:00:24 +0000 Subject: [PATCH 1/4] Add CI workflow for Surge integration tests and update workflow for Taiko --- .github/workflows/ci-surge.yml | 172 +++++++++++++++++++++++++++++++++ .github/workflows/ci-taiko.yml | 35 ++++--- 2 files changed, 189 insertions(+), 18 deletions(-) create mode 100644 .github/workflows/ci-surge.yml diff --git a/.github/workflows/ci-surge.yml b/.github/workflows/ci-surge.yml new file mode 100644 index 000000000000..8357744a30b6 --- /dev/null +++ b/.github/workflows/ci-surge.yml @@ -0,0 +1,172 @@ +name: "Surge Integration Tests" + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + paths: + - "src/Nethermind/Nethermind.Taiko/**" + - ".github/workflows/ci-taiko-surge.yml" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + integration_tests: + if: >- + ${{ github.event.pull_request.draft == false + && !startsWith(github.head_ref, 'release-please') }} + name: Integration tests + runs-on: [ubuntu-latest] + timeout-minutes: 30 + env: + SURGE_TAIKO_MONO_DIR: surge-taiko-mono + PACAYA_FORK_TAIKO_MONO_DIR: pacaya-fork-taiko-mono + SHASTA_FORK_TAIKO_MONO_DIR: shasta-fork-taiko-mono + + strategy: + matrix: + execution_node: [l2_nmc] + + steps: + - uses: actions/checkout@v6 + + - uses: actions/checkout@v6 + with: + repository: NethermindEth/surge-taiko-mono + path: ${{ env.SURGE_TAIKO_MONO_DIR }} + ref: surge-shasta + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + + - name: Set up Go + uses: actions/setup-go@v6 + with: + go-version-file: ${{ env.SURGE_TAIKO_MONO_DIR }}/go.mod + cache: true + + - name: Set up Git to use HTTPS + shell: bash + run: | + git config --global url."https://github.com/".insteadOf "git@github.com:" + + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 9 + run_install: false + + - name: Install Node.js + uses: actions/setup-node@v5 + with: + node-version: 20 + cache: pnpm + cache-dependency-path: ${{ env.SURGE_TAIKO_MONO_DIR }}/pnpm-lock.yaml + + - name: Install dependencies + working-directory: ${{ env.SURGE_TAIKO_MONO_DIR }} + shell: bash + run: pnpm install + + - uses: actions/checkout@v6 + with: + repository: taikoxyz/taiko-mono + path: >- + ${{ format('{0}/{1}', env.SURGE_TAIKO_MONO_DIR, + env.PACAYA_FORK_TAIKO_MONO_DIR) }} + ref: taiko-alethia-protocol-v2.3.0-devnet-shasta-test + + - uses: actions/checkout@v6 + with: + repository: NethermindEth/surge-taiko-mono + path: >- + ${{ format('{0}/{1}', env.SURGE_TAIKO_MONO_DIR, + env.SHASTA_FORK_TAIKO_MONO_DIR) }} + ref: surge-alethia-protocol-v3.0.0 + + - name: Install pnpm dependencies for pacaya fork taiko-mono + working-directory: >- + ${{ format('{0}/{1}', env.SURGE_TAIKO_MONO_DIR, + env.PACAYA_FORK_TAIKO_MONO_DIR) }} + run: cd ./packages/protocol && pnpm install + + - name: Install pnpm dependencies for shasta fork taiko-mono + working-directory: >- + ${{ format('{0}/{1}', env.SURGE_TAIKO_MONO_DIR, + env.SHASTA_FORK_TAIKO_MONO_DIR) }} + run: cd ./packages/protocol && pnpm install + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Docker Build Nethermind Client + run: | + image_name="nethermindeth/nethermind" + image_tag="${GITHUB_SHA:0:8}" + full_image="${image_name}:${image_tag}" + + echo "Building Docker image: ${full_image}" + + docker buildx build . \ + --platform linux/amd64 \ + -f Dockerfile \ + -t "${full_image}" \ + --load \ + --build-arg BUILD_CONFIG=release \ + --build-arg CI=true \ + --build-arg COMMIT_HASH=${{ github.sha }} \ + --build-arg SOURCE_DATE_EPOCH=$(git log -1 --format=%ct) + + echo "IMAGE_TAG=${full_image}" >> $GITHUB_ENV + + echo "Verifying image exists locally:" + docker images | grep "${image_name}" | grep "${image_tag}" || (echo "Error: Image not found locally" && exit 1) + + - name: Install yq + run: | + sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 + sudo chmod +x /usr/local/bin/yq + yq --version + + - name: Update taiko-client docker-compose.yml with new image + working-directory: >- + ${{ env.SURGE_TAIKO_MONO_DIR }}/packages/taiko-client/internal/docker/nodes + run: | + docker_compose_file="docker-compose.yml" + if [ -f "$docker_compose_file" ]; then + echo "Current image in docker-compose.yml:" + yq eval '.services.l2_nmc.image' "$docker_compose_file" + + echo "Updating docker-compose.yml with image: ${IMAGE_TAG}" + yq eval '.services.l2_nmc.image = "'"${IMAGE_TAG}"'"' -i "$docker_compose_file" + + yq eval '.services.l2_nmc.pull_policy = "never"' -i "$docker_compose_file" + + echo "Updated image in docker-compose.yml:" + yq eval '.services.l2_nmc.image' "$docker_compose_file" + + echo "Pull policy set to:" + yq eval '.services.l2_nmc.pull_policy' "$docker_compose_file" + else + echo "Warning: docker-compose.yml not found at expected path" + exit 1 + fi + + - name: Run Tests on ${{ matrix.execution_node }} execution engine + working-directory: >- + ${{ env.SURGE_TAIKO_MONO_DIR }}/packages/taiko-client + env: + L2_NODE: ${{ matrix.execution_node }} + run: >- + SHASTA_FORK_TAIKO_MONO=${GITHUB_WORKSPACE}/${{ format('{0}/{1}', env.SURGE_TAIKO_MONO_DIR, env.SHASTA_FORK_TAIKO_MONO_DIR) }} + PACAYA_FORK_TAIKO_MONO=${GITHUB_WORKSPACE}/${{ format('{0}/{1}', env.SURGE_TAIKO_MONO_DIR, env.PACAYA_FORK_TAIKO_MONO_DIR) }} + make test + + - name: Codecov.io + uses: codecov/codecov-action@v5 + with: + files: ${{ env.SURGE_TAIKO_MONO_DIR }}/packages/taiko-client/coverage.out + flags: taiko-client + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/ci-taiko.yml b/.github/workflows/ci-taiko.yml index d01e20692415..7023f8b69789 100644 --- a/.github/workflows/ci-taiko.yml +++ b/.github/workflows/ci-taiko.yml @@ -1,4 +1,4 @@ -name: "Nethermind/Ethereum Taiko Client CI Tests" +name: "Taiko Integration Tests" on: pull_request: @@ -20,8 +20,7 @@ jobs: runs-on: [ubuntu-latest] timeout-minutes: 30 env: - OLD_FORK_TAIKO_MONO_DIR: old-fork-taiko-mono - TAIKO_MONO_MAIN_DIR: taiko-mono-main + TAIKO_MONO_DIR: taiko-mono PACAYA_FORK_TAIKO_MONO_DIR: pacaya-fork-taiko-mono SHASTA_FORK_TAIKO_MONO_DIR: shasta-fork-taiko-mono @@ -34,9 +33,9 @@ jobs: - uses: actions/checkout@v6 with: - repository: NethermindEth/surge-taiko-mono - path: ${{ env.TAIKO_MONO_MAIN_DIR }} - ref: surge-shasta + repository: taikoxyz/taiko-mono + path: ${{ env.TAIKO_MONO_DIR }} + ref: main - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 @@ -44,7 +43,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v6 with: - go-version-file: ${{ env.TAIKO_MONO_MAIN_DIR }}/go.mod + go-version-file: ${{ env.TAIKO_MONO_DIR }}/go.mod cache: true - name: Set up Git to use HTTPS @@ -63,10 +62,10 @@ jobs: with: node-version: 20 cache: pnpm - cache-dependency-path: ${{ env.TAIKO_MONO_MAIN_DIR }}/pnpm-lock.yaml + cache-dependency-path: ${{ env.TAIKO_MONO_DIR }}/pnpm-lock.yaml - name: Install dependencies - working-directory: ${{ env.TAIKO_MONO_MAIN_DIR }} + working-directory: ${{ env.TAIKO_MONO_DIR }} shell: bash run: pnpm install @@ -74,7 +73,7 @@ jobs: with: repository: taikoxyz/taiko-mono path: >- - ${{ format('{0}/{1}', env.TAIKO_MONO_MAIN_DIR, + ${{ format('{0}/{1}', env.TAIKO_MONO_DIR, env.PACAYA_FORK_TAIKO_MONO_DIR) }} ref: taiko-alethia-protocol-v2.3.0-devnet-shasta-test @@ -82,19 +81,19 @@ jobs: with: repository: taikoxyz/taiko-mono path: >- - ${{ format('{0}/{1}', env.TAIKO_MONO_MAIN_DIR, + ${{ format('{0}/{1}', env.TAIKO_MONO_DIR, env.SHASTA_FORK_TAIKO_MONO_DIR) }} ref: taiko-alethia-protocol-v3.0.0 - name: Install pnpm dependencies for pacaya fork taiko-mono working-directory: >- - ${{ format('{0}/{1}', env.TAIKO_MONO_MAIN_DIR, + ${{ format('{0}/{1}', env.TAIKO_MONO_DIR, env.PACAYA_FORK_TAIKO_MONO_DIR) }} run: cd ./packages/protocol && pnpm install - name: Install pnpm dependencies for shasta fork taiko-mono working-directory: >- - ${{ format('{0}/{1}', env.TAIKO_MONO_MAIN_DIR, + ${{ format('{0}/{1}', env.TAIKO_MONO_DIR, env.SHASTA_FORK_TAIKO_MONO_DIR) }} run: cd ./packages/protocol && pnpm install @@ -132,7 +131,7 @@ jobs: - name: Update taiko-client docker-compose.yml with new image working-directory: >- - ${{ env.TAIKO_MONO_MAIN_DIR }}/packages/taiko-client/internal/docker/nodes + ${{ env.TAIKO_MONO_DIR }}/packages/taiko-client/internal/docker/nodes run: | docker_compose_file="docker-compose.yml" if [ -f "$docker_compose_file" ]; then @@ -156,18 +155,18 @@ jobs: - name: Run Tests on ${{ matrix.execution_node }} execution engine working-directory: >- - ${{ env.TAIKO_MONO_MAIN_DIR }}/packages/taiko-client + ${{ env.TAIKO_MONO_DIR }}/packages/taiko-client env: L2_NODE: ${{ matrix.execution_node }} run: >- - SHASTA_FORK_TAIKO_MONO=${GITHUB_WORKSPACE}/${{ format('{0}/{1}', env.TAIKO_MONO_MAIN_DIR, env.SHASTA_FORK_TAIKO_MONO_DIR) }} - PACAYA_FORK_TAIKO_MONO=${GITHUB_WORKSPACE}/${{ format('{0}/{1}', env.TAIKO_MONO_MAIN_DIR, env.PACAYA_FORK_TAIKO_MONO_DIR) }} + SHASTA_FORK_TAIKO_MONO=${GITHUB_WORKSPACE}/${{ format('{0}/{1}', env.TAIKO_MONO_DIR, env.SHASTA_FORK_TAIKO_MONO_DIR) }} + PACAYA_FORK_TAIKO_MONO=${GITHUB_WORKSPACE}/${{ format('{0}/{1}', env.TAIKO_MONO_DIR, env.PACAYA_FORK_TAIKO_MONO_DIR) }} make test - name: Codecov.io uses: codecov/codecov-action@v5 with: - files: ${{ env.TAIKO_MONO_MAIN_DIR }}/packages/taiko-client/coverage.out + files: ${{ env.TAIKO_MONO_DIR }}/packages/taiko-client/coverage.out flags: taiko-client env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} From b7eb06f590d8b03c57f58ec93abbe44fa16a833b Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Thu, 5 Feb 2026 14:10:49 +0000 Subject: [PATCH 2/4] Update CI workflow to reference the correct surge configuration file --- .github/workflows/ci-surge.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-surge.yml b/.github/workflows/ci-surge.yml index 8357744a30b6..5729f38f7ded 100644 --- a/.github/workflows/ci-surge.yml +++ b/.github/workflows/ci-surge.yml @@ -5,7 +5,7 @@ on: types: [opened, synchronize, reopened, ready_for_review] paths: - "src/Nethermind/Nethermind.Taiko/**" - - ".github/workflows/ci-taiko-surge.yml" + - ".github/workflows/ci-surge.yml" concurrency: group: ${{ github.workflow }}-${{ github.ref }} From ed21b43e65adf075f7caa09e55b7dfda44cd0300 Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Thu, 5 Feb 2026 15:27:18 +0000 Subject: [PATCH 3/4] Update CI workflows to increase timeout for integration tests and adjust repository references --- .github/workflows/ci-surge.yml | 6 +++--- .github/workflows/ci-taiko.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci-surge.yml b/.github/workflows/ci-surge.yml index 5729f38f7ded..451f5e815bff 100644 --- a/.github/workflows/ci-surge.yml +++ b/.github/workflows/ci-surge.yml @@ -18,7 +18,7 @@ jobs: && !startsWith(github.head_ref, 'release-please') }} name: Integration tests runs-on: [ubuntu-latest] - timeout-minutes: 30 + timeout-minutes: 45 env: SURGE_TAIKO_MONO_DIR: surge-taiko-mono PACAYA_FORK_TAIKO_MONO_DIR: pacaya-fork-taiko-mono @@ -71,11 +71,11 @@ jobs: - uses: actions/checkout@v6 with: - repository: taikoxyz/taiko-mono + repository: NethermindEth/surge-taiko-mono path: >- ${{ format('{0}/{1}', env.SURGE_TAIKO_MONO_DIR, env.PACAYA_FORK_TAIKO_MONO_DIR) }} - ref: taiko-alethia-protocol-v2.3.0-devnet-shasta-test + ref: jmadibekov/pacaya-dummy-verifiers-fix - uses: actions/checkout@v6 with: diff --git a/.github/workflows/ci-taiko.yml b/.github/workflows/ci-taiko.yml index 7023f8b69789..8ed810e8799f 100644 --- a/.github/workflows/ci-taiko.yml +++ b/.github/workflows/ci-taiko.yml @@ -18,7 +18,7 @@ jobs: && !startsWith(github.head_ref, 'release-please') }} name: Integration tests runs-on: [ubuntu-latest] - timeout-minutes: 30 + timeout-minutes: 45 env: TAIKO_MONO_DIR: taiko-mono PACAYA_FORK_TAIKO_MONO_DIR: pacaya-fork-taiko-mono From f9e3b0ca635f4b9bf57c8ecbda6fb543c2172473 Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Fri, 6 Feb 2026 08:04:59 +0000 Subject: [PATCH 4/4] Resolve comments --- .github/workflows/ci-surge.yml | 25 ++++++++++--------------- .github/workflows/ci-taiko.yml | 25 ++++++++++--------------- 2 files changed, 20 insertions(+), 30 deletions(-) diff --git a/.github/workflows/ci-surge.yml b/.github/workflows/ci-surge.yml index 451f5e815bff..87ff8b8c4688 100644 --- a/.github/workflows/ci-surge.yml +++ b/.github/workflows/ci-surge.yml @@ -24,14 +24,12 @@ jobs: PACAYA_FORK_TAIKO_MONO_DIR: pacaya-fork-taiko-mono SHASTA_FORK_TAIKO_MONO_DIR: shasta-fork-taiko-mono - strategy: - matrix: - execution_node: [l2_nmc] - steps: - - uses: actions/checkout@v6 + - name: Checkout Nethermind + uses: actions/checkout@v6 - - uses: actions/checkout@v6 + - name: Checkout surge-taiko-mono + uses: actions/checkout@v6 with: repository: NethermindEth/surge-taiko-mono path: ${{ env.SURGE_TAIKO_MONO_DIR }} @@ -46,11 +44,6 @@ jobs: go-version-file: ${{ env.SURGE_TAIKO_MONO_DIR }}/go.mod cache: true - - name: Set up Git to use HTTPS - shell: bash - run: | - git config --global url."https://github.com/".insteadOf "git@github.com:" - - name: Install pnpm uses: pnpm/action-setup@v4 with: @@ -69,7 +62,8 @@ jobs: shell: bash run: pnpm install - - uses: actions/checkout@v6 + - name: Checkout Pacaya fork + uses: actions/checkout@v6 with: repository: NethermindEth/surge-taiko-mono path: >- @@ -77,7 +71,8 @@ jobs: env.PACAYA_FORK_TAIKO_MONO_DIR) }} ref: jmadibekov/pacaya-dummy-verifiers-fix - - uses: actions/checkout@v6 + - name: Checkout Shasta fork + uses: actions/checkout@v6 with: repository: NethermindEth/surge-taiko-mono path: >- @@ -153,11 +148,11 @@ jobs: exit 1 fi - - name: Run Tests on ${{ matrix.execution_node }} execution engine + - name: Run integration tests working-directory: >- ${{ env.SURGE_TAIKO_MONO_DIR }}/packages/taiko-client env: - L2_NODE: ${{ matrix.execution_node }} + L2_NODE: l2_nmc run: >- SHASTA_FORK_TAIKO_MONO=${GITHUB_WORKSPACE}/${{ format('{0}/{1}', env.SURGE_TAIKO_MONO_DIR, env.SHASTA_FORK_TAIKO_MONO_DIR) }} PACAYA_FORK_TAIKO_MONO=${GITHUB_WORKSPACE}/${{ format('{0}/{1}', env.SURGE_TAIKO_MONO_DIR, env.PACAYA_FORK_TAIKO_MONO_DIR) }} diff --git a/.github/workflows/ci-taiko.yml b/.github/workflows/ci-taiko.yml index 8ed810e8799f..2d92a38090aa 100644 --- a/.github/workflows/ci-taiko.yml +++ b/.github/workflows/ci-taiko.yml @@ -24,14 +24,12 @@ jobs: PACAYA_FORK_TAIKO_MONO_DIR: pacaya-fork-taiko-mono SHASTA_FORK_TAIKO_MONO_DIR: shasta-fork-taiko-mono - strategy: - matrix: - execution_node: [l2_nmc] - steps: - - uses: actions/checkout@v6 + - name: Checkout Nethermind + uses: actions/checkout@v6 - - uses: actions/checkout@v6 + - name: Checkout taiko-mono + uses: actions/checkout@v6 with: repository: taikoxyz/taiko-mono path: ${{ env.TAIKO_MONO_DIR }} @@ -46,11 +44,6 @@ jobs: go-version-file: ${{ env.TAIKO_MONO_DIR }}/go.mod cache: true - - name: Set up Git to use HTTPS - shell: bash - run: | - git config --global url."https://github.com/".insteadOf "git@github.com:" - - name: Install pnpm uses: pnpm/action-setup@v4 with: @@ -69,7 +62,8 @@ jobs: shell: bash run: pnpm install - - uses: actions/checkout@v6 + - name: Checkout Pacaya fork + uses: actions/checkout@v6 with: repository: taikoxyz/taiko-mono path: >- @@ -77,7 +71,8 @@ jobs: env.PACAYA_FORK_TAIKO_MONO_DIR) }} ref: taiko-alethia-protocol-v2.3.0-devnet-shasta-test - - uses: actions/checkout@v6 + - name: Checkout Shasta fork + uses: actions/checkout@v6 with: repository: taikoxyz/taiko-mono path: >- @@ -153,11 +148,11 @@ jobs: exit 1 fi - - name: Run Tests on ${{ matrix.execution_node }} execution engine + - name: Run integration tests working-directory: >- ${{ env.TAIKO_MONO_DIR }}/packages/taiko-client env: - L2_NODE: ${{ matrix.execution_node }} + L2_NODE: l2_nmc run: >- SHASTA_FORK_TAIKO_MONO=${GITHUB_WORKSPACE}/${{ format('{0}/{1}', env.TAIKO_MONO_DIR, env.SHASTA_FORK_TAIKO_MONO_DIR) }} PACAYA_FORK_TAIKO_MONO=${GITHUB_WORKSPACE}/${{ format('{0}/{1}', env.TAIKO_MONO_DIR, env.PACAYA_FORK_TAIKO_MONO_DIR) }}