From 85dc957ca2f5ff67a35a4d6a921567a004e59574 Mon Sep 17 00:00:00 2001 From: Darren Kelly <107671032+darrenvechain@users.noreply.github.com> Date: Mon, 22 Apr 2024 15:35:08 +0100 Subject: [PATCH] Enable e2e tests (#685) * feat: enabling e2e tests * fix: trigger from workflow call * chore: update actions names * fix: thor tests path * feat: cancel old runs * fix: update junit.xml path * fix: update upload artifact * fix: use sha docker docker artifact * chore: use specific tag * fix: use full sha for ref --- .github/workflows/on-master-commit.yaml | 5 ++ .github/workflows/on-pull-request.yaml | 8 +++ .github/workflows/test-e2e.yaml | 76 +++++++++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 .github/workflows/test-e2e.yaml diff --git a/.github/workflows/on-master-commit.yaml b/.github/workflows/on-master-commit.yaml index 2770b6350..9a51890f6 100644 --- a/.github/workflows/on-master-commit.yaml +++ b/.github/workflows/on-master-commit.yaml @@ -14,6 +14,10 @@ jobs: name: Lint uses: ./.github/workflows/lint-go.yaml + run-e2e-tests: + name: E2E Tests + uses: ./.github/workflows/test-e2e.yaml + generate-tags: name: Generate Docker Tags runs-on: ubuntu-latest @@ -34,6 +38,7 @@ jobs: secrets: inherit needs: - run-unit-tests + - run-e2e-tests - generate-tags - lint permissions: diff --git a/.github/workflows/on-pull-request.yaml b/.github/workflows/on-pull-request.yaml index 143d08bdf..b39edbd57 100644 --- a/.github/workflows/on-pull-request.yaml +++ b/.github/workflows/on-pull-request.yaml @@ -5,11 +5,19 @@ on: branches: - master +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true + jobs: run-unit-tests: name: Run Unit Tests uses: ./.github/workflows/test.yaml + run-e2e-tests: + name: E2E Tests + uses: ./.github/workflows/test-e2e.yaml + lint: name: Lint uses: ./.github/workflows/lint-go.yaml diff --git a/.github/workflows/test-e2e.yaml b/.github/workflows/test-e2e.yaml new file mode 100644 index 000000000..e0b3eaf31 --- /dev/null +++ b/.github/workflows/test-e2e.yaml @@ -0,0 +1,76 @@ +name: E2E Tests + +on: + workflow_call: + +jobs: + build-docker-image: + name: Build Docker image + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and export + uses: docker/build-push-action@v5 + with: + context: . + tags: vechain/thor:${{ github.sha }} + outputs: type=docker,dest=/tmp/vechain-thor.tar + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: vechain-thor-image-${{ github.sha }} + path: /tmp/vechain-thor.tar + retention-days: 7 + + run-tests: + runs-on: ubuntu-latest + needs: build-docker-image + env: + THOR_IMAGE: vechain/thor:${{ github.sha }} + name: Run Tests + steps: + + - name: Checkout + uses: actions/checkout@v4 + with: + repository: vechain/thor-e2e-tests + # https://github.com/vechain/thor-e2e-tests/tree/2cb22d804bb3cdf075917dbece42a182d42d7486 + ref: 2cb22d804bb3cdf075917dbece42a182d42d7486 + + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: vechain-thor-image-${{ github.sha }} + path: /tmp + + - name: Setup Node JS + uses: actions/setup-node@v4 + with: + node-version: '18.x' + + - name: Load image + run: | + docker load --input /tmp/vechain-thor.tar + docker image ls -a + + - name: Run Tests + run: | + export THOR_IMAGE=vechain/thor:${{ github.sha }} + yarn install + yarn test + + - uses: actions/upload-artifact@v4 + if: success() || failure() + with: + name: e2e-test-results-${{ github.sha }} + path: ./junit.xml + retention-days: 14