Skip to content

acceptance-stage

acceptance-stage #1904

name: acceptance-stage
on:
schedule:
- cron: '*/30 * * * *' # Run every 30 minutes
workflow_dispatch:
inputs:
force_run:
description: 'Force run (even if no new images)'
required: false
default: false
type: boolean
concurrency:
group: acceptance-stage
cancel-in-progress: true
jobs:
find-latest-images:
runs-on: ubuntu-latest
outputs:
image-digest-urls: ${{ steps.get-digest.outputs.image-digest-urls }}
latest-image-timestamp: ${{ steps.get-digest.outputs.latest-image-timestamp }}
permissions:
contents: read
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Resolve Latest Docker Digests
id: get-digest
uses: optivem/find-latest-docker-images-action@v1
with:
image-urls: |
ghcr.io/${{ github.repository_owner }}/modern-acceptance-testing-in-legacy-code/frontend:latest
ghcr.io/${{ github.repository_owner }}/modern-acceptance-testing-in-legacy-code/backend:latest
should-run:
needs: find-latest-images
if: needs.find-latest-images.result == 'success'
runs-on: ubuntu-latest
outputs:
should_run: ${{ steps.check.outputs.should-run }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Should Run Acceptance Stage
id: check
uses: optivem/should-run-acceptance-stage-action@v1
with:
latest-image-timestamp: ${{ needs.find-latest-images.outputs.latest-image-timestamp }}
force-run: ${{ inputs.force_run == true }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
system-test:
needs: [should-run, find-latest-images]
if: needs.should-run.outputs.should_run == 'true'
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Deploy System
id: deploy-system
uses: ./.github/actions/deploy-docker-images
with:
environment: acceptance
version: latest
image-urls: ${{ needs.find-latest-images.outputs.image-digest-urls }}
- name: Setup Java
uses: actions/setup-java@v4
with:
java-version: 21
distribution: temurin
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Make Gradle Wrapper executable
run: chmod +x ./gradlew
working-directory: system-test
- name: Run Acceptance Tests
run: echo "Run Acceptance Tests"
- name: Run External System Contract Tests
run: echo "Run External System Contract Tests"
- name: Run E2E Tests
run: ./gradlew :e2e-test:test
working-directory: system-test