Skip to content

Add bridge test to CI #32

Add bridge test to CI

Add bridge test to CI #32

Workflow file for this run

name: CI
on:
push:
branches:
- zkevm
pull_request:
branches:
- zkevm
types:
- opened
- reopened
- synchronize
- ready_for_review
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
tests:
strategy:
matrix:
os: [ ubuntu-20.04, macos-14 ] # list of os: https://github.com/actions/virtual-environments
runs-on: ${{ matrix.os }}
timeout-minutes: ${{ matrix.os == 'macos-14' && 40 || 30 }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: '1.19'
- name: Install dependencies on Linux
if: runner.os == 'Linux'
run: sudo apt update && sudo apt install build-essential
- name: Build
run: make all
- name: Reproducible build test
run: |
make cdk-erigon
shasum -a256 ./build/bin/cdk-erigon > erigon1.sha256
make cdk-erigon
shasum -a256 ./build/bin/cdk-erigon > erigon2.sha256
if ! cmp -s erigon1.sha256 erigon2.sha256; then
echo >&2 "Reproducible build broken"; cat erigon1.sha256; cat erigon2.sha256; exit 1
fi
# - name: Lint
# if: runner.os == 'Linux'
# uses: golangci/golangci-lint-action@v4
# with:
# version: v1.54
- name: Test
run: make test
kurtosis-cdk:
runs-on: ubuntu-latest
steps:
- name: Checkout cdk-erigon
uses: actions/checkout@v4
with:
path: cdk-erigon
- name: Checkout kurtosis-cdk
uses: actions/checkout@v4
with:
repository: 0xPolygon/kurtosis-cdk
ref: main
path: kurtosis-cdk
- name: Install Kurtosis CDK tools
uses: ./kurtosis-cdk/.github/actions/setup-kurtosis-cdk
- name: Build docker image
working-directory: ./cdk-erigon
run: docker build -t cdk-erigon:local --file Dockerfile .
- name: Install sed
run: sudo apt-get install sed
- name: Install yq
run: |
sudo curl -L https://github.com/mikefarah/yq/releases/download/v4.44.2/yq_linux_amd64 -o /usr/local/bin/yq
sudo chmod +x /usr/local/bin/yq
/usr/local/bin/yq --version
- name: Configure Kurtosis CDK
working-directory: ./kurtosis-cdk
run: |
/usr/local/bin/yq -i '.args.data_availability_mode = "rollup"' cdk-erigon-sequencer-params.yml
/usr/local/bin/yq -i '.args.cdk_erigon_node_image = "cdk-erigon:local"' cdk-erigon-sequencer-params.yml
- name: Deploy Kurtosis CDK package
working-directory: ./kurtosis-cdk
run: kurtosis run --enclave cdk-v1 --args-file cdk-erigon-sequencer-params.yml --image-download always .
# - name: Monitor verified batches
# working-directory: ./kurtosis-cdk
# shell: bash
# run: .github/actions/monitor-cdk-verified-batches/batch_verification_monitor.sh 20 600 cdk-erigon-node-001
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Set up envs
run: |
kurtosis files download cdk-v1 bridge-config-artifact
echo "BRIDGE_ADDRESS=$(/usr/local/bin/yq '.NetworkConfig.PolygonBridgeAddress' bridge-config-artifact/bridge-config.toml)" >> $GITHUB_ENV
export ETH_RPC_URL=$(kurtosis port print cdk-v1 el-1-geth-lighthouse rpc)
echo "ETH_RPC_URL=$ETH_RPC_URL" >> $GITHUB_ENV
echo "ETH_PRC_PORT=$(echo $ETH_RPC_URL | sed -n 's/.*:\([0-9]*\).*/\1/p')" >> $GITHUB_ENV
export BRIDGE_API_URL=$(kurtosis port print cdk-v1 zkevm-bridge-service-001 rpc)
echo "BRIDGE_API_URL=$BRIDGE_API_URL" >> $GITHUB_ENV
echo "BRIDGE_API_PORT=$(echo $BRIDGE_API_URL | sed -n 's/.*:\([0-9]*\).*/\1/p')" >> $GITHUB_ENV
echo BRIDGE_API_PORT $BRIDGE_API_PORT
echo ETH_PRC_PORT $ETH_PRC_PORT
- name: Run bridge tests
working-directory: ./cdk-erigon
env:
RAW_PRIVATE_KEY: "0x12d7de8621a77640c9241b2595ba78ce443d05e94090365ab3bb5e19df82c625"
DESTINATION_NET: "10101"
DESTINATION_ADDRESS: "0xE34aaF64b29273B7D567FCFc40544c014EEe9970"
ETHER_VALUE: "2"
TOKEN_ADDRESS: ""
IS_FORCED: "true"
BRIDGE_ADDRESS: ${{ env.BRIDGE_ADDRESS }}
META_BYTES: "0x"
ETH_RPC_URL: ${{ env.ETH_RPC_URL }}
ETH_RPC_PORT: ${{ env.ETH_RPC_PORT }}
BRIDGE_API_URL: ${{ env.BRIDGE_API_URL }}
BRIDGE_API_PORT: ${{ env.BRIDGE_API_PORT }}
DRY_RUN: "false"
run: |
cd zk/tests/bridge
docker-compose up --build --exit-code-from bridge-script
- name: Upload logs
uses: actions/upload-artifact@v3
with:
name: evm-rpc-tests-logs-${{ github.run_id }}
path: ./cdk-erigon/logs/evm-rpc-tests.log
- name: Prepare logs
working-directory: ./kurtosis-cdk
if: failure()
run: |
mkdir -p ci_logs
cd ci_logs
kurtosis service logs cdk-v1 cdk-erigon-node-001 --all > cdk-erigon-node-001.log
kurtosis service logs cdk-v1 cdk-erigon-sequencer-001 --all > cdk-erigon-sequencer-001.log
- name: Upload logs
if: failure()
uses: actions/upload-artifact@v3
with:
name: logs_${{ github.run_id }}
path: ./kurtosis-cdk/ci_logs