From 37b6fe58cd05f62df0ee5211db32f1cfb3a1a4d2 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Thu, 14 Dec 2023 16:18:30 +0100 Subject: [PATCH] feat: add workflow for topos integration tests (#26) --- .github/workflows/topos:integration-tests.yml | 137 ++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 .github/workflows/topos:integration-tests.yml diff --git a/.github/workflows/topos:integration-tests.yml b/.github/workflows/topos:integration-tests.yml new file mode 100644 index 0000000..f31cfaa --- /dev/null +++ b/.github/workflows/topos:integration-tests.yml @@ -0,0 +1,137 @@ +name: Topos Integration Tests + +on: + pull_request: + branches: + - main + workflow_dispatch: + inputs: + local-erc20-messaging-infra-ref: + description: "Git ref of local-erc20-messaging-infra" + required: false + topos-docker-tag: + description: "Docker tag of topos" + required: false + topos-smart-contracts-docker-tag: + description: "Docker tag of topos-smart-contracts" + required: false + +env: + TOPOS_DOCKER_TAG: ${{ inputs.topos-docker-tag || 'latest' }} + CONTRACTS_DOCKER_TAG: ${{ inputs.topos-smart-contracts-docker-tag || 'latest' }} + +jobs: + infra-metadata: + uses: ./.github/workflows/util:get-latest-release.yml + with: + organization: topos-protocol + repository: local-erc20-messaging-infra + + e2e: + runs-on: ubuntu-latest-16-core + environment: devnet-1 + env: + INFRA_REF: ${{ inputs.local-erc20-messaging-infra-ref || needs.infra-metadata.outputs.latest-release }} + needs: + - infra-metadata + steps: + - name: Display stack component versions + run: | + echo "infra ref: ${{ env.INFRA_REF }}" + echo "topos docker tag: ${{ env.TOPOS_DOCKER_TAG }}" + echo "contracts docker tag: ${{ env.CONTRACTS_DOCKER_TAG }}" + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Cache Docker layers + uses: actions/cache@v3 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + + - name: Checkout local-erc20-messaging-infra repo + uses: actions/checkout@v3 + with: + repository: topos-protocol/local-erc20-messaging-infra + ref: ${{ env.INFRA_REF }} + path: infra + + - name: Start local ERC20 messaging infra containers + run: > + cd infra && + source .env && + ./tests/network.sh start + env: + PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} + TOKEN_DEPLOYER_SALT: ${{ secrets.TOKEN_DEPLOYER_SALT }} + TOPOS_CORE_SALT: ${{ secrets.TOPOS_CORE_SALT }} + TOPOS_CORE_PROXY_SALT: ${{ secrets.TOPOS_CORE_PROXY_SALT }} + ERC20_MESSAGING_SALT: ${{ secrets.ERC20_MESSAGING_SALT }} + SUBNET_REGISTRATOR_SALT: ${{ secrets.SUBNET_REGISTRATOR_SALT }} + TOPOS_VERSION: ${{ env.TOPOS_DOCKER_TAG }} + TOPOS_MESSAGING_PROTOCOL_CONTRACTS_VERSION: ${{ env.CONTRACTS_DOCKER_TAG }} + + - name: Debug containers + if: failure() + run: docker inspect contracts-topos | grep Image && docker logs contracts-topos + + - name: Get contracts .env file and expose contract addresses for test scripts + run: | + mkdir ./contracts + docker cp contracts-topos:/contracts/.env ./contracts/.env + source ./contracts/.env + echo "SUBNET_REGISTRATOR_CONTRACT_ADDRESS=${SUBNET_REGISTRATOR_CONTRACT_ADDRESS}" >> $GITHUB_ENV + echo "ERC20_MESSAGING_CONTRACT_ADDRESS=${ERC20_MESSAGING_CONTRACT_ADDRESS}" >> $GITHUB_ENV + echo "TOPOS_CORE_PROXY_CONTRACT_ADDRESS=${TOPOS_CORE_PROXY_CONTRACT_ADDRESS}" >> $GITHUB_ENV + + - name: Run certificates production tests + run: > + cd infra && + source .env && + ./tests/test_cert_production.sh + env: + DOCKER_DEFAULT_PLATFORM: linux/amd64 + PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} + TOKEN_DEPLOYER_SALT: ${{ secrets.TOKEN_DEPLOYER_SALT }} + TOPOS_CORE_SALT: ${{ secrets.TOPOS_CORE_SALT }} + TOPOS_CORE_PROXY_SALT: ${{ secrets.TOPOS_CORE_PROXY_SALT }} + ERC20_MESSAGING_SALT: ${{ secrets.ERC20_MESSAGING_SALT }} + SUBNET_REGISTRATOR_SALT: ${{ secrets.SUBNET_REGISTRATOR_SALT }} + + - name: Debug docker show infra containers + if: failure() + run: docker ps + + - name: Debug sending sequencer + if: failure() + run: docker logs topos-sequencer + + - name: Debug receiving sequencer + if: failure() + run: docker logs incal-sequencer + + - name: Debug TCE boot node + if: failure() + run: docker logs topos-node-1 || docker logs infra-tce-boot-1 + + - name: Debug TCE peer node 2 + if: failure() + run: docker logs topos-node-2 || docker logs infra-tce-peer-1 + + - name: Debug TCE peer node 3 + if: failure() + run: docker logs topos-node-3 || docker logs infra-tce-peer-2 + + - name: Debug TCE peer node 4 + if: failure() + run: docker logs topos-node-4 || docker logs infra-tce-peer-3 + + - name: Debug Incal node 1 + if: failure() + run: docker logs incal-node-1