Skip to content

feat:multichain contract calls #703

feat:multichain contract calls

feat:multichain contract calls #703

name: Integration tests
on:
push:
branches:
- main
tags:
- 'v*.*.*'
pull_request:
env:
REGISTRY: ghcr.io
IMAGE_NAME: steward-steward
HARDHAT_IMAGE_NAME: steward-hardhat
ORCHESTRATOR_IMAGE_NAME: ghcr.io/peggyjv/gravity-bridge-orchestrator:main
SOMMELIER_IMAGE: ghcr.io/peggyjv/sommelier-sommelier:main
STEWARD_ARTIFACT: steward_steward
HARDHAT_ARTIFACT: steward_hardhat
UPLOAD_DIR: /tmp/uploaded_artifacts
DOWNLOAD_DIR: /tmp/downloaded_artifacts
jobs:
hardhat-build:
permissions:
contents: write
packages: write
runs-on: ubuntu-20.04
steps:
- name: checkout
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Cache Docker layers
uses: actions/cache@v2
id: docker-cache
with:
path: /tmp/.buildx-cache
# Key is named differently to avoid collision
key: ${{ runner.os }}-multi-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-multi-buildx
- name: labels
id: meta
uses: docker/metadata-action@v3
with:
images: ${{ env.HARDHAT_IMAGE_NAME }}
- name: Make upload dir
run: mkdir -p ${{ env.UPLOAD_DIR }}
- name: build
uses: docker/build-push-action@v2
with:
context: integration_tests/ethereum
file: integration_tests/ethereum/Dockerfile
push: false
tags: ${{ steps.meta.outputs.tags }}
builder: ${{ steps.buildx.outputs.name }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-new
outputs: type=docker,dest=${{ env.UPLOAD_DIR }}/${{ env.HARDHAT_ARTIFACT }}
- name: Make hardhat image artifact available to other jobs
uses: actions/upload-artifact@v3
with:
name: ${{ env.HARDHAT_IMAGE_NAME }}
path: ${{ env.UPLOAD_DIR }}/${{ env.HARDHAT_ARTIFACT }}
retention-days: 1
- name: Move Docker cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
steward-build:
permissions:
contents: write
packages: write
runs-on: ubuntu-20.04
steps:
- name: checkout
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Cache Docker layers
uses: actions/cache@v2
id: docker-cache
with:
path: /tmp/.buildx-cache
# Key is named differently to avoid collision
key: ${{ runner.os }}-multi-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-multi-buildx
- name: labels
id: meta
uses: docker/metadata-action@v3
with:
images: ${{ env.IMAGE_NAME }}
- name: Make upload dir
run: mkdir -p ${{ env.UPLOAD_DIR }}
- name: build
uses: docker/build-push-action@v2
with:
file: Dockerfile
push: false
tags: ${{ steps.meta.outputs.tags }}
builder: ${{ steps.buildx.outputs.name }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-new
outputs: type=docker,dest=${{ env.UPLOAD_DIR }}/${{ env.STEWARD_ARTIFACT }}
- name: Make Steward artifact available to other jobs
uses: actions/upload-artifact@v3
with:
name: ${{ env.IMAGE_NAME }}
path: ${{ env.UPLOAD_DIR }}/${{ env.STEWARD_ARTIFACT }}
retention-days: 1
- name: Move Docker cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
integration-tests:
permissions:
contents: write
packages: write
environment: CI
runs-on: ubuntu-20.04
needs: [ steward-build, hardhat-build ]
strategy:
fail-fast: false
matrix:
test_type: [ "AaveV2Stablecoin", "CellarV1", "CellarV2", "CellarV2_2", "ScheduledCorkProposal" ]
steps:
- name: Set up Go 1.19
uses: actions/setup-go@v2
with:
go-version: 1.19
- name: checkout
uses: actions/checkout@v2
- name: go-cache
uses: actions/cache@v2
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: docker sommelier metadata
id: meta-sommelier
uses: docker/metadata-action@v3
with:
images: ${{ env.SOMMELIER_IMAGE }}
- name: docker hardhat metadata
id: meta-hardhat
uses: docker/metadata-action@v3
with:
images: ${{ env.HARDHAT_IMAGE_NAME }}
- name: docker steward metadata
id: meta-steward
uses: docker/metadata-action@v3
with:
images: ${{ env.IMAGE_NAME }}
- name: pull sommelier image
run: docker pull ${{ env.SOMMELIER_IMAGE }}
- name: rename sommelier image
run: docker tag ${{ env.SOMMELIER_IMAGE }} sommelier:prebuilt
- name: pull orchestrator image
run: docker pull ${{ env.ORCHESTRATOR_IMAGE_NAME }}
- name: rename orchestrator image
run: docker tag ${{ env.ORCHESTRATOR_IMAGE_NAME }} orchestrator:prebuilt
- name: Make download dir
run: mkdir -p ${{ env.DOWNLOAD_DIR }}
- name: Get hardhat artifact
uses: actions/download-artifact@v3
with:
name: ${{ env.HARDHAT_IMAGE_NAME }}
path: ${{ env.DOWNLOAD_DIR }}/
- name: Load hardhat image
run: docker load --input ${{ env.DOWNLOAD_DIR }}/${{ env.HARDHAT_ARTIFACT }}
- name: Rename hardhat image
run: docker tag ${{ steps.meta-hardhat.outputs.tags }} ethereum:prebuilt
- name: Get steward artifact
uses: actions/download-artifact@v3
with:
name: ${{ env.IMAGE_NAME }}
path: ${{ env.DOWNLOAD_DIR }}/
- name: Load steward image
run: docker load --input ${{ env.DOWNLOAD_DIR }}/${{ env.STEWARD_ARTIFACT }}
- name: Rename steward image
run: docker tag ${{ steps.meta-steward.outputs.tags }} steward:prebuilt
- name: clean the slate
run: make e2e_clean_slate
- name: build go test binary
run: cd integration_tests && go test -c
- name: Run end to end test
run: ./integration_tests/integration_tests.test -test.failfast -test.v -test.run IntegrationTestSuite -testify.m Test${{ matrix.test_type }}
env:
E2E_SKIP_CLEANUP: true
- name: Clean up docker images
run: scripts/clean_slate.sh
- name: Remove testnet tempdir
run: sudo rm -rf somm-e2e-testnet*