From 9bf47599b2161b26db3d77a8b5b7779996f4fad2 Mon Sep 17 00:00:00 2001 From: Sameer Date: Wed, 25 Sep 2024 11:46:17 +0200 Subject: [PATCH] Add docker compose definition to run the relayer as a service (#70) ### What was the problem? This PR resolves #LISK-960 ### How was it solved? - [x] Optimized Dockerfile - [x] Added docker-compose.yml - [x] Update `appspec.yml` to use docker-compose.yml - [x] Set up new CodePipeline & CodeDeploy application to deploy to the new EC2 server instance - [x] Set up new CloudWatch group to capture the docker container logs - [x] Add scripts for local development on docker - [x] Remove unused file: `cloudbuild.yml` ### How was it tested? Against Sepolia on the new server instance against the current branch. --------- Co-authored-by: Incede <33103370+Incede@users.noreply.github.com> --- .github/workflows/branch.yaml | 2 +- .github/workflows/docker.yaml | 8 ++- .github/workflows/pr.yaml | 3 +- .prettierignore | 1 + Dockerfile | 34 +++++++--- appspec.yml | 12 ++-- cloudbuild.yml | 7 -- config/sepolia/relayerExternalInventory.json | 41 ++++++++++++ docker-compose.yml | 48 ++++++++++++++ scripts/lisk/docker/changeToAppInstallDir.sh | 7 ++ scripts/lisk/docker/composeStart.sh | 9 +++ scripts/lisk/docker/composeStop.sh | 10 +++ .../lisk/docker/dev/changeToAppInstallDir.sh | 8 +++ scripts/lisk/docker/dev/composeStart.sh | 18 ++++++ scripts/lisk/docker/dev/composeStop.sh | 11 ++++ .../lisk/docker/dev/docker-compose-dev.patch | 29 +++++++++ scripts/lisk/docker/dev/setEnvVariables.sh | 25 ++++++++ .../docker/mainnet/containerStartBot_1.sh | 64 +++++++++++++++++++ .../docker/sepolia/containerStartBot_1.sh | 64 +++++++++++++++++++ scripts/lisk/docker/setEnvVariables.sh | 25 ++++++++ scripts/{ => lisk}/installApplication.sh | 0 scripts/{ => lisk}/installDependencies.sh | 0 scripts/{ => lisk}/runMainnet.sh | 0 scripts/{ => lisk}/runSepolia.sh | 0 .../{ => lisk}/runSepoliaSimulationMode.sh | 0 25 files changed, 399 insertions(+), 27 deletions(-) delete mode 100644 cloudbuild.yml create mode 100644 config/sepolia/relayerExternalInventory.json create mode 100644 docker-compose.yml create mode 100644 scripts/lisk/docker/changeToAppInstallDir.sh create mode 100644 scripts/lisk/docker/composeStart.sh create mode 100644 scripts/lisk/docker/composeStop.sh create mode 100644 scripts/lisk/docker/dev/changeToAppInstallDir.sh create mode 100644 scripts/lisk/docker/dev/composeStart.sh create mode 100644 scripts/lisk/docker/dev/composeStop.sh create mode 100644 scripts/lisk/docker/dev/docker-compose-dev.patch create mode 100644 scripts/lisk/docker/dev/setEnvVariables.sh create mode 100644 scripts/lisk/docker/mainnet/containerStartBot_1.sh create mode 100644 scripts/lisk/docker/sepolia/containerStartBot_1.sh create mode 100644 scripts/lisk/docker/setEnvVariables.sh rename scripts/{ => lisk}/installApplication.sh (100%) rename scripts/{ => lisk}/installDependencies.sh (100%) rename scripts/{ => lisk}/runMainnet.sh (100%) rename scripts/{ => lisk}/runSepolia.sh (100%) rename scripts/{ => lisk}/runSepoliaSimulationMode.sh (100%) diff --git a/.github/workflows/branch.yaml b/.github/workflows/branch.yaml index 9e8d3b848..d8152c4be 100644 --- a/.github/workflows/branch.yaml +++ b/.github/workflows/branch.yaml @@ -10,7 +10,7 @@ jobs: timeout-minutes: 30 # `yarn test` takes longer time steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Use Node.js 20 uses: actions/setup-node@v3 with: diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index b5d44671f..9f43f29e7 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -29,13 +29,15 @@ jobs: - name: Docker image id: docker-image run: | - echo "image=${{ steps.login-ecr.outputs.registry }}/${{ secrets.ECR_REPOSITORY }}:${{ github.sha }}" >> $GITHUB_OUTPUT + echo "image=${{ steps.login-ecr.outputs.registry }}/${{ secrets.ECR_REPOSITORY }}" >> $GITHUB_OUTPUT - name: Build and push the image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 id: docker-build with: context: ./ file: ./Dockerfile push: true - tags: latest,${{ steps.docker-image.outputs.image }} + tags: | + ${{ steps.docker-image.outputs.image }}:latest + ${{ steps.docker-image.outputs.image }}:${{ github.sha }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index f937c90f0..97dac82fa 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -1,4 +1,5 @@ name: "PR" + on: pull_request: @@ -8,7 +9,7 @@ jobs: timeout-minutes: 30 # `yarn test` takes longer time steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Use Node.js 20 uses: actions/setup-node@v3 with: diff --git a/.prettierignore b/.prettierignore index 71c49694d..8d8c16227 100644 --- a/.prettierignore +++ b/.prettierignore @@ -19,6 +19,7 @@ dist/ ## ignore files .*ignore .nvmrc +*.patch # Ignore extensions *.env diff --git a/Dockerfile b/Dockerfile index 7b9460f8c..a037cd144 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,31 @@ -FROM node:20 +ARG NODEJS_VERSION=20 -WORKDIR /relayer +##### Stage 1 -COPY . ./ +FROM node:$NODEJS_VERSION-alpine AS builder -RUN apt-get update -RUN apt-get install -y libudev-dev libusb-1.0-0-dev jq yarn rsync -RUN yarn +RUN apk add --no-cache alpine-sdk=~1 python3=~3 && \ + adduser -D builder && \ + chown -R builder:builder /home/builder/ -RUN yarn build +USER builder +WORKDIR /home/builder/build -ENTRYPOINT ["/bin/bash", "scripts/runCommand.sh"] +COPY . . + +RUN yarn install --frozen-lockfile && yarn build + +##### Stage 2 + +FROM node:$NODEJS_VERSION-alpine + +RUN apk add --no-cache aws-cli=~2 jq=~1 && \ + adduser -D lisk && \ + chown -R lisk:lisk /home/lisk/ + +USER lisk +WORKDIR /home/lisk/across-relayer + +COPY --chown=lisk:lisk --from=builder /home/builder/build/dist/ ./dist/ +COPY --chown=lisk:lisk --from=builder /home/builder/build/node_modules/ ./node_modules/ +COPY --chown=lisk:lisk --from=builder /home/builder/build/config/ ./config/ diff --git a/appspec.yml b/appspec.yml index 446b80bbe..95f918748 100644 --- a/appspec.yml +++ b/appspec.yml @@ -4,11 +4,9 @@ files: - source: / destination: /home/ubuntu/lisk-across-relayer hooks: - AfterInstall: - - location: scripts/installDependencies.sh - runas: root - - location: scripts/installApplication.sh - runas: root + ApplicationStop: + - location: scripts/lisk/docker/composeStop.sh + timeout: 330 ApplicationStart: - - location: scripts/runMainnet.sh - runas: root + - location: scripts/lisk/docker/composeStart.sh + timeout: 300 diff --git a/cloudbuild.yml b/cloudbuild.yml deleted file mode 100644 index 3d54ca2c5..000000000 --- a/cloudbuild.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: - - name: "gcr.io/cloud-builders/docker" - args: ["build", "-t", "gcr.io/images-across-6363/across-v2", "."] -options: - machineType: "E2_HIGHCPU_32" -timeout: 3600s -images: ["gcr.io/images-across-6363/across-v2"] diff --git a/config/sepolia/relayerExternalInventory.json b/config/sepolia/relayerExternalInventory.json new file mode 100644 index 000000000..277bcd1ca --- /dev/null +++ b/config/sepolia/relayerExternalInventory.json @@ -0,0 +1,41 @@ +{ + "wrapEtherTarget": 0.1, + "wrapEtherThreshold": 0.125, + "wrapEtherTargetPerChain": { + "1": 1 + }, + "wrapEtherThresholdPerChain": { + "1": 2 + }, + "tokenConfig": { + "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14": { + "11155111": { + "targetPct": 100, + "thresholdPct": 100, + "unwrapWethThreshold": 0.5, + "unwrapWethTarget": 1 + }, + "4202": { + "targetPct": 30, + "thresholdPct": 10, + "unwrapWethThreshold": 0.025, + "unwrapWethTarget": 0.1, + "targetOverageBuffer": 1.5 + } + }, + "0x16B840bA01e2b05fc2268eAf6d18892a11EC29D6": { + "4202": { + "targetPct": 30, + "thresholdPct": 10, + "targetOverageBuffer": 2.5 + } + }, + "0xaA8E23Fb1079EA71e0a56F48a2aA51851D8433D0": { + "4202": { + "targetPct": 30, + "thresholdPct": 10, + "targetOverageBuffer": 1.5 + } + } + } +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..5c229e7e9 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,48 @@ +services: + redis: + image: redis:7-alpine + platform: linux/amd64 + volumes: + - redis-data:/data + networks: + - across_relayer_network + restart: always + command: redis-server + healthcheck: + test: redis-cli ping + interval: 15s + timeout: 5s + retries: 3 + + relayer_1: + image: ${AWS_ECR_REGISTRY}/${AWS_ECR_REPOSITORY}:${ACROSS_RELAYER_IMAGE_TAG} + platform: linux/amd64 + depends_on: + redis: + condition: service_healthy + volumes: + - ./scripts/lisk/docker/${NETWORK:-mainnet}/containerStartBot_1.sh:/home/lisk/across-relayer/scripts/start.sh + networks: + - across_relayer_network + restart: always + command: ["/bin/sh", "/home/lisk/across-relayer/scripts/start.sh"] + logging: + driver: awslogs + options: + awslogs-region: eu-west-3 + awslogs-group: /ec2/lisk-across-relayer + awslogs-stream: ec2/lisk.across.relayer.docker.log + environment: + - REDIS_URL=redis://redis:6379 + ports: + - ${RELAYER_1_API_SERVER_HOST:-0.0.0.0}:${RELAYER_1_API_SERVER_PORT:-3000}:${RELAYER_1_API_SERVER_PORT:-3000} + healthcheck: + test: curl --fail http://relayer_1:${RELAYER_1_API_SERVER_PORT:-3000}/healthz + extra_hosts: + - "host.docker.internal:host-gateway" + +networks: + across_relayer_network: + +volumes: + redis-data: diff --git a/scripts/lisk/docker/changeToAppInstallDir.sh b/scripts/lisk/docker/changeToAppInstallDir.sh new file mode 100644 index 000000000..49f338e35 --- /dev/null +++ b/scripts/lisk/docker/changeToAppInstallDir.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -eu + +app_install_dir="/home/ubuntu/lisk-across-relayer" +echo "App install dir: $app_install_dir" + +cd ${app_install_dir} diff --git a/scripts/lisk/docker/composeStart.sh b/scripts/lisk/docker/composeStart.sh new file mode 100644 index 000000000..b3a85666b --- /dev/null +++ b/scripts/lisk/docker/composeStart.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -eu + +. $(dirname "$0")/changeToAppInstallDir.sh + +. $(dirname "$0")/setEnvVariables.sh + +aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${AWS_ECR_REGISTRY} +docker compose up --pull always --detach diff --git a/scripts/lisk/docker/composeStop.sh b/scripts/lisk/docker/composeStop.sh new file mode 100644 index 000000000..2fa3eee97 --- /dev/null +++ b/scripts/lisk/docker/composeStop.sh @@ -0,0 +1,10 @@ +#!/bin/bash +set -eu + +. $(dirname "$0")/changeToAppInstallDir.sh + +. $(dirname "$0")/setEnvVariables.sh + +# Wait for the CI to build and push the Docker image to ECR +sleep 300 +docker compose down --rmi all diff --git a/scripts/lisk/docker/dev/changeToAppInstallDir.sh b/scripts/lisk/docker/dev/changeToAppInstallDir.sh new file mode 100644 index 000000000..63dc8629e --- /dev/null +++ b/scripts/lisk/docker/dev/changeToAppInstallDir.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -eu + +app_install_dir=$(dirname $(realpath "$0"))/../../../.. + +cd ${app_install_dir} + +echo "App install dir set to: $PWD" diff --git a/scripts/lisk/docker/dev/composeStart.sh b/scripts/lisk/docker/dev/composeStart.sh new file mode 100644 index 000000000..99fd645f3 --- /dev/null +++ b/scripts/lisk/docker/dev/composeStart.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -eu + +if [ ! -z "$(git status --untracked-files=no --porcelain)" ]; then + echo "Please stash/commit your local changes and re-run the script." + exit 1 +fi + +. $(dirname $(realpath "$0"))/changeToAppInstallDir.sh + +. scripts/lisk/docker/dev/setEnvVariables.sh + +mkdir -p $PWD/.aws +cp $HOME/.aws/credentials $PWD/.aws/ +git apply scripts/lisk/docker/dev/docker-compose-dev.patch + +aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${AWS_ECR_REGISTRY} +docker compose up --pull always --detach diff --git a/scripts/lisk/docker/dev/composeStop.sh b/scripts/lisk/docker/dev/composeStop.sh new file mode 100644 index 000000000..5b6d52655 --- /dev/null +++ b/scripts/lisk/docker/dev/composeStop.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -eu + +. $(dirname $(realpath "$0"))/changeToAppInstallDir.sh + +. scripts/lisk/docker/dev/setEnvVariables.sh + +docker compose down --rmi all + +git apply -R scripts/lisk/docker/dev/docker-compose-dev.patch +rm -rf $PWD/.aws diff --git a/scripts/lisk/docker/dev/docker-compose-dev.patch b/scripts/lisk/docker/dev/docker-compose-dev.patch new file mode 100644 index 000000000..2296575d5 --- /dev/null +++ b/scripts/lisk/docker/dev/docker-compose-dev.patch @@ -0,0 +1,29 @@ +diff --git a/docker-compose.yml b/docker-compose.yml +index 5c229e7e..c4177aaf 100644 +--- a/docker-compose.yml ++++ b/docker-compose.yml +@@ -21,17 +21,18 @@ services: + redis: + condition: service_healthy + volumes: ++ - ./.aws/credentials:/home/lisk/.aws/credentials + - ./scripts/lisk/docker/${NETWORK:-mainnet}/containerStartBot_1.sh:/home/lisk/across-relayer/scripts/start.sh + networks: + - across_relayer_network + restart: always + command: ["/bin/sh", "/home/lisk/across-relayer/scripts/start.sh"] +- logging: +- driver: awslogs +- options: +- awslogs-region: eu-west-3 +- awslogs-group: /ec2/lisk-across-relayer +- awslogs-stream: ec2/lisk.across.relayer.docker.log ++ # logging: ++ # driver: awslogs ++ # options: ++ # awslogs-region: eu-west-3 ++ # awslogs-group: /ec2/lisk-across-relayer ++ # awslogs-stream: ec2/lisk.across.relayer.docker.log + environment: + - REDIS_URL=redis://redis:6379 + ports: diff --git a/scripts/lisk/docker/dev/setEnvVariables.sh b/scripts/lisk/docker/dev/setEnvVariables.sh new file mode 100644 index 000000000..67d6d0293 --- /dev/null +++ b/scripts/lisk/docker/dev/setEnvVariables.sh @@ -0,0 +1,25 @@ +#!/bin/bash +set -eu + +# Set env var from secrets +# secret_id=arn:aws:secretsmanager:eu-west-3:132202091885:secret:mainnet/lisk-across-relayer/aws-CSi7ka +secret_id=arn:aws:secretsmanager:eu-west-3:132202091885:secret:sepolia/across-relayer-dev/aws-7CIqpl +RELAYER_CONFIG=`aws --region eu-west-3 secretsmanager get-secret-value --secret-id ${secret_id} | jq --raw-output .SecretString | jq -r .` + +echo "Setting environment variables within the current shell on the host" + +export AWS_REGION=`echo $RELAYER_CONFIG | jq -r ."AWS_REGION"` + +export AWS_ECR_REGISTRY=`echo $RELAYER_CONFIG | jq -r ."AWS_ECR_REGISTRY"` + +export AWS_ECR_REPOSITORY=`echo $RELAYER_CONFIG | jq -r ."AWS_ECR_REPOSITORY"` + +export ACROSS_RELAYER_IMAGE_TAG=`echo $RELAYER_CONFIG | jq -r ."ACROSS_RELAYER_IMAGE_TAG"` + +export NETWORK=`echo $RELAYER_CONFIG | jq -r ."NETWORK"` + +export RELAYER_1_API_SERVER_HOST=`echo $RELAYER_CONFIG | jq -r ."RELAYER_1_API_SERVER_HOST"` + +export RELAYER_1_API_SERVER_PORT=`echo $RELAYER_CONFIG | jq -r ."RELAYER_1_API_SERVER_PORT"` + +echo "Finished setting all the environment variables within the current shell on the host" diff --git a/scripts/lisk/docker/mainnet/containerStartBot_1.sh b/scripts/lisk/docker/mainnet/containerStartBot_1.sh new file mode 100644 index 000000000..600bb073a --- /dev/null +++ b/scripts/lisk/docker/mainnet/containerStartBot_1.sh @@ -0,0 +1,64 @@ +#!/bin/bash +app_dir=$PWD +echo "Current DIR: $PWD" + +# Remove previous .env var if any +readonly env_file="${app_dir}/.env" +rm -f ${env_file} + +# Setting env var from secrets +secret_id=arn:aws:secretsmanager:eu-west-3:132202091885:secret:mainnet/lisk-across-relayer/aws-CSi7ka +RELAYER_CONFIG=`aws --region eu-west-3 secretsmanager get-secret-value --secret-id ${secret_id} | jq --raw-output .SecretString | jq -r .` + +AWSKMS_CONFIG=`echo $RELAYER_CONFIG | jq -r ."AWSKMS_CONFIG"` +echo "AWSKMS_CONFIG=$AWSKMS_CONFIG" >> ${env_file} + +AWS_S3_STORAGE_CONFIG=`echo $RELAYER_CONFIG | jq -r ."AWS_S3_STORAGE_CONFIG"` +echo "AWS_S3_STORAGE_CONFIG=$AWS_S3_STORAGE_CONFIG" >> ${env_file} + +RPC_PROVIDER_DRPC_1=`echo $RELAYER_CONFIG | jq -r ."RPC_PROVIDER_DRPC_1"` +echo "RPC_PROVIDER_DRPC_1=$RPC_PROVIDER_DRPC_1" >> ${env_file} + +RPC_PROVIDER_TENDERLY_1=`echo $RELAYER_CONFIG | jq -r ."RPC_PROVIDER_TENDERLY_1"` +echo "RPC_PROVIDER_TENDERLY_1=$RPC_PROVIDER_TENDERLY_1" >> ${env_file} + +RPC_PROVIDER_DRPC_1135=`echo $RELAYER_CONFIG | jq -r ."RPC_PROVIDER_DRPC_1135"` +echo "RPC_PROVIDER_DRPC_1135=$RPC_PROVIDER_DRPC_1135" >> ${env_file} + +RPC_PROVIDER_GELATO_1135=`echo $RELAYER_CONFIG | jq -r ."RPC_PROVIDER_GELATO_1135"` +echo "RPC_PROVIDER_GELATO_1135=$RPC_PROVIDER_GELATO_1135" >> ${env_file} + +SLACK_CONFIG=`echo $RELAYER_CONFIG | jq -r ."SLACK_CONFIG"` +echo "SLACK_CONFIG=$SLACK_CONFIG" >> ${env_file} + +echo "All env vars from secrets are set." + +# Set the bot identifier +echo "BOT_IDENTIFIER=LISK_ACROSS_RELAYER_1" >> ${env_file} + +# Simulation mode OFF +echo "SEND_RELAYS=true" >> ${env_file} +echo "SEND_REBALANCES=true" >> ${env_file} + +# RPC provider configuration +echo "RPC_PROVIDERS=DRPC,GELATO,TENDERLY" >> ${env_file} +echo "RPC_PROVIDERS_1=DRPC,TENDERLY" >> ${env_file} +echo "RPC_PROVIDERS_1135=GELATO,DRPC" >> ${env_file} + +# Mainnet settings +echo "RELAYER_ORIGIN_CHAINS=[1,1135]" >> ${env_file} +echo "RELAYER_DESTINATION_CHAINS=[1,1135]" >> ${env_file} +echo "MIN_RELAYER_FEE_PCT=0.00005" >> ${env_file} + +# Fee settings +echo "PRIORITY_FEE_SCALER_1=0.8" >> ${env_file} +echo "RELAYER_GAS_PADDING=0" >> ${env_file} + +# Supported token settings +echo RELAYER_TOKENS=\'[\"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\", \"0x6033F7f88332B8db6ad452B7C6D5bB643990aE3f\", \"0xdAC17F958D2ee523a2206206994597C13D831ec7\"]\' >> ${env_file} +echo MIN_DEPOSIT_CONFIRMATIONS=\'{\"5000\": { \"1\": 5, \"1135\": 10 }, \"2000\": { \"1\": 4, \"1135\": 10 }, \"100\": { \"1\": 3, \"1135\": 10 } }\' >> ${env_file} +echo RELAYER_EXTERNAL_INVENTORY_CONFIG=\'config/mainnet/relayerExternalInventory.json\' >> ${env_file} + +echo "All env vars are set." + +node ${app_dir}/dist/index.js --relayer --wallet awskms --keys relayerKey diff --git a/scripts/lisk/docker/sepolia/containerStartBot_1.sh b/scripts/lisk/docker/sepolia/containerStartBot_1.sh new file mode 100644 index 000000000..e85ab8683 --- /dev/null +++ b/scripts/lisk/docker/sepolia/containerStartBot_1.sh @@ -0,0 +1,64 @@ +#!/bin/bash +app_dir=$PWD +echo "Current DIR: $PWD" + +# Remove previous .env var if any +readonly env_file="${app_dir}/.env" +rm -f ${env_file} + +# Setting env var from secrets +secret_id=arn:aws:secretsmanager:eu-west-3:132202091885:secret:sepolia/across-relayer-dev/aws-7CIqpl +RELAYER_CONFIG=`aws --region eu-west-3 secretsmanager get-secret-value --secret-id ${secret_id} | jq --raw-output .SecretString | jq -r .` + +AWSKMS_CONFIG=`echo $RELAYER_CONFIG | jq -r ."AWSKMS_CONFIG"` +echo "AWSKMS_CONFIG=$AWSKMS_CONFIG" >> ${env_file} + +AWS_S3_STORAGE_CONFIG=`echo $RELAYER_CONFIG | jq -r ."AWS_S3_STORAGE_CONFIG"` +echo "AWS_S3_STORAGE_CONFIG=$AWS_S3_STORAGE_CONFIG" >> ${env_file} + +RPC_PROVIDER_DRPC_11155111=`echo $RELAYER_CONFIG | jq -r ."RPC_PROVIDER_DRPC_11155111"` +echo "RPC_PROVIDER_DRPC_11155111=$RPC_PROVIDER_DRPC_11155111" >> ${env_file} + +RPC_PROVIDER_TENDERLY_11155111=`echo $RELAYER_CONFIG | jq -r ."RPC_PROVIDER_TENDERLY_11155111"` +echo "RPC_PROVIDER_TENDERLY_11155111=$RPC_PROVIDER_TENDERLY_11155111" >> ${env_file} + +RPC_PROVIDER_DRPC_4202=`echo $RELAYER_CONFIG | jq -r ."RPC_PROVIDER_DRPC_4202"` +echo "RPC_PROVIDER_DRPC_4202=$RPC_PROVIDER_DRPC_4202" >> ${env_file} + +RPC_PROVIDER_GELATO_4202=`echo $RELAYER_CONFIG | jq -r ."RPC_PROVIDER_GELATO_4202"` +echo "RPC_PROVIDER_GELATO_4202=$RPC_PROVIDER_GELATO_4202" >> ${env_file} + +HUB_CHAIN_ID=`echo $RELAYER_CONFIG | jq -r ."HUB_CHAIN_ID"` +echo "HUB_CHAIN_ID=$HUB_CHAIN_ID" >> ${env_file} + +echo "All env vars from secrets are set." + +# Set the bot identifier +echo "BOT_IDENTIFIER=LISK_ACROSS_RELAYER_SEPOLIA" >> ${env_file} + +# Simulation mode ON +echo "SEND_RELAYS=false" >> ${env_file} +echo "SEND_REBALANCES=false" >> ${env_file} + +# RPC provider configuration +echo "RPC_PROVIDERS=DRPC,GELATO,TENDERLY" >> ${env_file} +echo "RPC_PROVIDERS_11155111=DRPC,TENDERLY" >> ${env_file} +echo "RPC_PROVIDERS_4202=GELATO,DRPC" >> ${env_file} + +# Testnet settings +echo "RELAYER_ORIGIN_CHAINS=[11155111,4202]" >> ${env_file} +echo "RELAYER_DESTINATION_CHAINS=[11155111,4202]" >> ${env_file} +echo "MIN_RELAYER_FEE_PCT=0.00005" >> ${env_file} + +# Fee settings +echo "PRIORITY_FEE_SCALER_11155111=0.8" >> ${env_file} +echo "RELAYER_GAS_PADDING=0" >> ${env_file} + +# Supported token settings +echo RELAYER_TOKENS=\'[\"0x16B840bA01e2b05fc2268eAf6d18892a11EC29D6\", \"0xaA8E23Fb1079EA71e0a56F48a2aA51851D8433D0\", \"0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14\"]\' >> ${env_file} +echo MIN_DEPOSIT_CONFIRMATIONS=\'{ \"1000000\": { \"919\": 1, \"4202\": 1, \"80002\": 1, \"84532\": 1, \"421614\": 1, \"11155111\": 1, \"11155420\": 1 } }\' >> ${env_file} +echo RELAYER_EXTERNAL_INVENTORY_CONFIG=\'/home/lisk/across-relayer/config/sepolia/relayerExternalInventory.json\' >> ${env_file} + +echo "All env vars are set." + +node ${app_dir}/dist/index.js --relayer --wallet awskms --keys relayerKey diff --git a/scripts/lisk/docker/setEnvVariables.sh b/scripts/lisk/docker/setEnvVariables.sh new file mode 100644 index 000000000..05d7bb4a2 --- /dev/null +++ b/scripts/lisk/docker/setEnvVariables.sh @@ -0,0 +1,25 @@ +#!/bin/bash +set -eu + +# Set env var from secrets +secret_id=arn:aws:secretsmanager:eu-west-3:132202091885:secret:mainnet/lisk-across-relayer/aws-CSi7ka +# secret_id=arn:aws:secretsmanager:eu-west-3:132202091885:secret:sepolia/across-relayer-dev/aws-7CIqpl +RELAYER_CONFIG=`aws --region eu-west-3 secretsmanager get-secret-value --secret-id ${secret_id} | jq --raw-output .SecretString | jq -r .` + +echo "Setting environment variables within the current shell on the host" + +export AWS_REGION=`echo $RELAYER_CONFIG | jq -r ."AWS_REGION"` + +export AWS_ECR_REGISTRY=`echo $RELAYER_CONFIG | jq -r ."AWS_ECR_REGISTRY"` + +export AWS_ECR_REPOSITORY=`echo $RELAYER_CONFIG | jq -r ."AWS_ECR_REPOSITORY"` + +export ACROSS_RELAYER_IMAGE_TAG=`echo $RELAYER_CONFIG | jq -r ."ACROSS_RELAYER_IMAGE_TAG"` + +export NETWORK=`echo $RELAYER_CONFIG | jq -r ."NETWORK"` + +export RELAYER_1_API_SERVER_HOST=`echo $RELAYER_CONFIG | jq -r ."RELAYER_1_API_SERVER_HOST"` + +export RELAYER_1_API_SERVER_PORT=`echo $RELAYER_CONFIG | jq -r ."RELAYER_1_API_SERVER_PORT"` + +echo "Finished setting all the environment variables within the current shell on the host" diff --git a/scripts/installApplication.sh b/scripts/lisk/installApplication.sh similarity index 100% rename from scripts/installApplication.sh rename to scripts/lisk/installApplication.sh diff --git a/scripts/installDependencies.sh b/scripts/lisk/installDependencies.sh similarity index 100% rename from scripts/installDependencies.sh rename to scripts/lisk/installDependencies.sh diff --git a/scripts/runMainnet.sh b/scripts/lisk/runMainnet.sh similarity index 100% rename from scripts/runMainnet.sh rename to scripts/lisk/runMainnet.sh diff --git a/scripts/runSepolia.sh b/scripts/lisk/runSepolia.sh similarity index 100% rename from scripts/runSepolia.sh rename to scripts/lisk/runSepolia.sh diff --git a/scripts/runSepoliaSimulationMode.sh b/scripts/lisk/runSepoliaSimulationMode.sh similarity index 100% rename from scripts/runSepoliaSimulationMode.sh rename to scripts/lisk/runSepoliaSimulationMode.sh