E2E Tests - workflow_dispatch #314
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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 |