Add bridge test to CI #32
This file contains 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: | |
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 |