Skip to content

E2E Tests - workflow_dispatch #314

E2E Tests - workflow_dispatch

E2E Tests - workflow_dispatch #314

Workflow file for this run

# Run E2E tests for a branch
#
# Description:
# Runs E2E tests for a specified branch
#
# Triggers:
# - push
#
# Secrets:
# - E2E.AWS_IAM_ROLE
on:
workflow_dispatch:
push:
branches:
- main
paths: # add other modules when there are under e2e tests
- 'powertools-batch/**'
- 'powertools-core/**'
- 'powertools-cloudformation/**'
- 'powertools-common/**'
- 'powertools-e2e-tests/**'
- 'powertools-idempotency/**'
- 'powertools-large-messages/**'
- 'powertools-logging/**'
- 'powertools-metrics/**'
- 'powertools-parameters/**'
- 'powertools-serialization/**'
- 'powertools-sqs/**'
- 'powertools-tracing/**'
- 'powertools-tracing/**'
- 'powertools-validation/**'
- 'pom.xml'
name: E2E Tests
run-name: E2E Tests - ${{ github.event_name }}
permissions:
contents: read
jobs:
discover-tests:
name: Discover E2E test classes
runs-on: ubuntu-latest
outputs:
e2e-classes: ${{ steps.parse.outputs.e2e-classes }}
e2e-graal-classes: ${{ steps.parse.outputs.e2e-graal-classes }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Parse test classes from POM profiles
id: parse
run: |
TEST_DIR="powertools-e2e-tests/src/test/java"
POM="powertools-e2e-tests/pom.xml"
# e2e profile uses **/*E2ET.java — find all matching test files
E2E_CLASSES=$(find "$TEST_DIR" -name '*E2ET.java' | xargs -n1 basename | sed 's/\.java$//' | sort | jq -R . | jq -sc .)
# Extract include patterns from e2e-graal profile, then match against test files
GRAAL_CLASSES=$(
awk '/<id>e2e-graal<\/id>/,/<\/profile>/' "$POM" \
| grep '<include>' \
| sed 's/.*<include>\(.*\)<\/include>.*/\1/' \
| while read -r pattern; do
filename="${pattern##*/}"
find "$TEST_DIR" -name "$filename" | xargs -n1 basename | sed 's/\.java$//'
done \
| sort | jq -R . | jq -sc .
)
echo "e2e test classes: $E2E_CLASSES"
echo "e2e-graal test classes: $GRAAL_CLASSES"
if [ "$E2E_CLASSES" = "[]" ] || [ -z "$E2E_CLASSES" ]; then
echo "::error::No e2e test classes found — check POM includes and test directory"
exit 1
fi
if [ "$GRAAL_CLASSES" = "[]" ] || [ -z "$GRAAL_CLASSES" ]; then
echo "::error::No e2e-graal test classes found — check POM includes and test directory"
exit 1
fi
echo "e2e-classes=$E2E_CLASSES" >> "$GITHUB_OUTPUT"
echo "e2e-graal-classes=$GRAAL_CLASSES" >> "$GITHUB_OUTPUT"
e2e:
name: E2E ${{ matrix.test-class }} (Java ${{ matrix.java }})
needs: discover-tests
runs-on: ubuntu-latest
permissions:
id-token: write
environment: E2E
strategy:
fail-fast: false
max-parallel: 10
matrix:
java:
- 11
- 17
- 21
- 25
test-class: ${{ fromJSON(needs.discover-tests.outputs.e2e-classes) }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup java
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'corretto'
java-version: ${{ matrix.java }}
cache: maven
- name: Build all modules
run: mvn -DskipTests -ntp install --file pom.xml
- name: Setup AWS credentials
uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7 # v6.0.0
with:
role-to-assume: ${{ secrets.AWS_IAM_ROLE }}
aws-region: us-east-1
- name: Run e2e test with Maven
env:
JAVA_VERSION: ${{ matrix.java }}
run: >
mvn -Pe2e -B -ntp
-Dit.test="${{ matrix.test-class }}"
verify --file powertools-e2e-tests/pom.xml
e2e-graal:
name: E2E GraalVM ${{ matrix.test-class }} (Java ${{ matrix.java }})
needs: discover-tests
runs-on: ubuntu-latest
permissions:
id-token: write
environment: E2E
strategy:
fail-fast: false
max-parallel: 5
matrix:
java:
- 25
test-class: ${{ fromJSON(needs.discover-tests.outputs.e2e-graal-classes) }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup java
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'corretto'
java-version: ${{ matrix.java }}
cache: maven
- name: Build all modules
run: mvn -DskipTests -ntp install --file pom.xml
- name: Setup AWS credentials
uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7 # v6.0.0
with:
role-to-assume: ${{ secrets.AWS_IAM_ROLE }}
aws-region: us-east-1
- name: Run e2e-graal test with Maven
env:
JAVA_VERSION: ${{ matrix.java }}
run: >
mvn -Pe2e-graal -B -ntp
-Dit.test="${{ matrix.test-class }}"
verify --file powertools-e2e-tests/pom.xml