diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 7a37f98ed..f50c28a0c 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -9,6 +9,7 @@ /bitcoin/ @conorpp @jumpsiegel /cosmwasm/ @jynnantonix @kcsongor @a5-pickle /ethereum/ @a5-pickle @calebrate @gator-boi @hendrikhofstadt @kcsongor +/ethereum/contracts/relayer @chase-45 @derpy-duck @JoeHowarth /near/ @jumpsiegel /solana/ @hendrikhofstadt @kcsongor @a5-pickle /sui/ @kcsongor @a5-pickle @gator-boi @heyitaki @@ -19,7 +20,8 @@ /clients/ @kcsongor @kev1n-peters @evan-gray /lp_ui/ @evan-gray @kev1n-peters -/relayer/ @evan-gray @kev1n-peters +/relayer/spy_relayer @evan-gray @kev1n-peters +/relayer/generic_relayer @chase-45 @derpy-duck @JoeHowarth /scripts/ @evan-gray @kcsongor /sdk/ @bruce-riley @evan-gray /sdk/js-proto-node/ @evan-gray @kev1n-peters diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bbd4b48ed..ee20fc776 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,7 +35,7 @@ jobs: kubectl config use-context ci - run: tilt ci -- --ci --namespace=$DEPLOY_NS --num=2 - timeout-minutes: 20 + timeout-minutes: 40 # Clean up k8s resources - run: kubectl delete --namespace=$DEPLOY_NS service,statefulset,configmap,pod,job --all @@ -68,8 +68,9 @@ jobs: - uses: actions/setup-node@v2 with: node-version: "16" - - run: cd ethereum && ../scripts/install-foundry - - run: cd ethereum && PATH=$PATH:$HOME/.foundry/bin/ make test + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + - run: cd ethereum && make test ethereum-upgrade: runs-on: ubuntu-20.04 @@ -78,6 +79,8 @@ jobs: - uses: actions/setup-node@v2 with: node-version: "16" + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 - run: cd clients/js && make install - run: cd ethereum && make test-upgrade diff --git a/.github/workflows/generic-relayer-docker.yml b/.github/workflows/generic-relayer-docker.yml new file mode 100644 index 000000000..7b5972b72 --- /dev/null +++ b/.github/workflows/generic-relayer-docker.yml @@ -0,0 +1,44 @@ +name: Publish generic relayer container image + +on: + workflow_dispatch: + push: + branches: ["main", "generic-relayer-merge", "gr/re-app-docker-push"] + release: + types: [published] + +env: + REGISTRY: ghcr.io + IMAGE_NAME: wormhole-foundation/generic-relayer + +jobs: + build-and-push-relayer-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Log in to the Container registry + uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Build and push Docker image + uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc + with: + context: . + file: ./relayer/generic_relayer/relayer-engine-v2/Dockerfile + push: true + tags: ${{ steps.meta.outputs.tags }} diff --git a/devnet/eth-devnet.yaml b/devnet/eth-devnet.yaml index ff91d124c..80742ad2a 100644 --- a/devnet/eth-devnet.yaml +++ b/devnet/eth-devnet.yaml @@ -36,12 +36,14 @@ spec: command: - npx - ganache-cli - - -q - - -e 10000 - - --deterministic - - --time="1970-01-01T00:00:00+00:00" + - --logging.quiet + - --wallet.defaultBalance=10000 + - --wallet.deterministic + - --chain.time="1970-01-01T00:00:00+00:00" - --host=0.0.0.0 - - --accounts=11 + - --wallet.totalAccounts=11 + - --chain.chainId=1 + - --chain.asyncRequestProcessing=false ports: - containerPort: 8545 name: rpc @@ -55,10 +57,11 @@ spec: command: - /bin/sh - -c - - "npm run migrate && npx truffle exec scripts/deploy_test_token.js && npm run deploy-batched-vaa-sender && npx truffle exec scripts/register_all_chains.js && nc -lkp 2000 0.0.0.0" + - "npm run migrate && npx truffle exec scripts/deploy_test_token.js && npx truffle exec scripts/register_all_chains.js && npm run deploy-relayers-evm1 && nc -lkn 2000" readinessProbe: periodSeconds: 1 failureThreshold: 300 + initialDelaySeconds: 90 tcpSocket: port: 2000 - name: mine diff --git a/devnet/eth-devnet2.yaml b/devnet/eth-devnet2.yaml index 87834a58e..7ecbdff88 100644 --- a/devnet/eth-devnet2.yaml +++ b/devnet/eth-devnet2.yaml @@ -37,13 +37,14 @@ spec: command: - npx - ganache-cli - - -q - - -e 10000 - - --deterministic - - --time="1970-01-01T00:00:00+00:00" + - --logging.quiet + - --wallet.defaultBalance=10000 + - --wallet.deterministic + - --chain.time="1970-01-01T00:00:00+00:00" - --host=0.0.0.0 - - --accounts=11 - - --chainId=1397 + - --wallet.totalAccounts=11 + - --chain.chainId=1397 + - --chain.asyncRequestProcessing=false ports: - containerPort: 8545 name: rpc @@ -57,10 +58,11 @@ spec: command: - /bin/sh - -c - - "sed -i 's/CHAIN_ID=0x2/CHAIN_ID=0x4/g;s/EVM_CHAIN_ID=1/EVM_CHAIN_ID=1397/g' .env && npm run migrate && npx truffle exec scripts/deploy_test_token.js && npx truffle exec scripts/register_all_chains.js && nc -lkp 2000 0.0.0.0" + - "sed -i 's/CHAIN_ID=0x2/CHAIN_ID=0x4/g;s/EVM_CHAIN_ID=1/EVM_CHAIN_ID=1397/g' .env && npm run migrate && npx truffle exec scripts/deploy_test_token.js && npx truffle exec scripts/register_all_chains.js && npm run deploy-relayers-evm2 && nc -lkn 2000" readinessProbe: periodSeconds: 1 failureThreshold: 300 + initialDelaySeconds: 90 tcpSocket: port: 2000 - name: mine diff --git a/testing/Dockerfile.sdk.test b/testing/Dockerfile.sdk.test index 580a80bed..4e30c0f16 100644 --- a/testing/Dockerfile.sdk.test +++ b/testing/Dockerfile.sdk.test @@ -1,6 +1,15 @@ -FROM node:18-alpine@sha256:44aaf1ccc80eaed6572a0f2ef7d6b5a2982d54481e4255480041ac92221e2f11 +FROM node:19.6.1-slim@sha256:a1ba21bf0c92931d02a8416f0a54daad66cb36a85d2b73af9d73b044f5f57cfc -RUN apk update && apk add g++ make python3 curl +##RUN apk update && apk add g++ make python3 curl + +RUN apt-get update && apt-get -y install \ + git python3 make curl netcat + +RUN npm i typescript -g +RUN curl -L https://foundry.paradigm.xyz | bash +RUN $HOME/.foundry/bin/foundryup +RUN ls $HOME/.foundry/bin +RUN mv /root/.foundry/bin/forge /bin/forge RUN mkdir -p /app WORKDIR /app @@ -10,6 +19,10 @@ RUN --mount=type=cache,uid=1000,gid=1000,target=/home/node/.npm \ npm ci --prefix ethereum COPY ethereum ./ethereum +WORKDIR /app/ethereum +RUN make forge_dependencies +WORKDIR /app + COPY solana/idl ./solana/idl/ COPY sdk/js/package.json sdk/js/package-lock.json ./sdk/js/ diff --git a/testing/sdk.sh b/testing/sdk.sh index 51a3ab232..eac3fa128 100644 --- a/testing/sdk.sh +++ b/testing/sdk.sh @@ -1,6 +1,7 @@ -#!/bin/sh +#!/bin/bash set -e while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' guardian:6060/readyz)" != "200" ]]; do sleep 5; done while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' spy:6060/metrics)" != "200" ]]; do sleep 5; done while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' ibc-relayer:7597/debug/pprof/)" != "200" ]]; do sleep 5; done +while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' relayer-engine:3000/metrics)" != "200" ]]; do sleep 5; done CI=true npm --prefix ../sdk/js run test-ci