Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
173 changes: 173 additions & 0 deletions .github/workflows/ci-taiko.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
name: "Nethermind/Ethereum Taiko Client CI Tests"

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- "src/Nethermind/Nethermind.Taiko/**"
- ".github/workflows/ci-taiko.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:
OLD_FORK_TAIKO_MONO_DIR: old-fork-taiko-mono
TAIKO_MONO_MAIN_DIR: taiko-mono-main
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.TAIKO_MONO_MAIN_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.TAIKO_MONO_MAIN_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.TAIKO_MONO_MAIN_DIR }}/pnpm-lock.yaml

- name: Install dependencies
working-directory: ${{ env.TAIKO_MONO_MAIN_DIR }}
shell: bash
run: pnpm install

- uses: actions/checkout@v6
with:
repository: taikoxyz/taiko-mono
path: >-
${{ format('{0}/{1}', env.TAIKO_MONO_MAIN_DIR,
env.PACAYA_FORK_TAIKO_MONO_DIR) }}
ref: taiko-alethia-protocol-v2.3.0-devnet-shasta-test

- uses: actions/checkout@v6
with:
repository: taikoxyz/taiko-mono
path: >-
${{ format('{0}/{1}', env.TAIKO_MONO_MAIN_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,
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,
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.TAIKO_MONO_MAIN_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.TAIKO_MONO_MAIN_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) }}
make test

- name: Codecov.io
uses: codecov/codecov-action@v5
with:
files: ${{ env.TAIKO_MONO_MAIN_DIR }}/packages/taiko-client/coverage.out
flags: taiko-client
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
Loading