Skip to content

Unification of all test-framework-related options #2512

Unification of all test-framework-related options

Unification of all test-framework-related options #2512

Workflow file for this run

name: "PR"
on:
- pull_request
jobs:
validate-format:
name: Validate format
runs-on: ubuntu-latest
strategy:
matrix:
java: [ 17 ]
steps:
- uses: actions/checkout@v4
- name: Reclaim Disk Space
run: .github/ci-prerequisites.sh
- name: Install required tools
run: sudo apt update && sudo apt install pigz
- name: Install JDK {{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
check-latest: true
cache: 'maven'
- name: Build with Maven
run: |
mvn -V -B --no-transfer-progress -s .github/quarkus-snapshots-mvn-settings.xml clean install -Pframework,examples -Dvalidate-format -DskipTests -DskipITs
- name: Tar Maven Repo
shell: bash
run: tar -I 'pigz -9' -cf maven-repo-current-fw.tgz -C ~ .m2/repository
- name: Persist Maven Repo
uses: actions/upload-artifact@v4
with:
name: maven-repo-current-fw${{matrix.java}}
path: maven-repo-current-fw.tgz
retention-days: 1
linux-build-jvm-latest:
name: Linux - JVM build - Latest Version
runs-on: ubuntu-latest
needs: validate-format
strategy:
matrix:
quarkus-version: ["999-SNAPSHOT"]
java: [ 17 ]
outputs:
has-flaky-tests: ${{steps.flaky-test-detector.outputs.has-flaky-tests}}
steps:
- uses: actions/checkout@v4
- name: Reclaim Disk Space
run: .github/ci-prerequisites.sh
- name: Install JDK {{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
check-latest: true
cache: 'maven'
- uses: ./.github/actions/prepare-quarkus-cli
- name: Build in JVM mode
run: |
mvn -B --no-transfer-progress -fae clean install -Pframework,examples -Drun-cli-tests -Dts.quarkus.cli.cmd="${PWD}/quarkus-dev-cli" -Dquarkus.platform.version="${{ matrix.quarkus-version }}"
- name: Detect flaky tests
id: flaky-test-detector
shell: bash
if: ${{ hashFiles('**/flaky-run-report.json') != '' }}
run: echo "has-flaky-tests=true" >> "$GITHUB_OUTPUT"
- name: Rename flaky test run report to avoid file name conflicts
id: rename-flaky-test-run-report
if: ${{ hashFiles('**/flaky-run-report.json') != '' }}
shell: bash
run: mv target/flaky-run-report.json target/flaky-run-report-linux-jvm-latest.json
- name: Archive flaky run report
id: archive-flaky-run-report
if: ${{ hashFiles('**/flaky-run-report-linux-jvm-latest.json') != '' }}
uses: actions/upload-artifact@v4
with:
name: flaky-run-report-linux-jvm-latest
path: target/flaky-run-report-linux-jvm-latest.json
- name: Zip Artifacts
run: |
zip -R artifacts-latest-linux-jvm${{ matrix.java }}.zip '*-reports/*'
- name: Archive artifacts
uses: actions/upload-artifact@v4
with:
name: artifacts-latest-linux-jvm${{ matrix.java }}
path: artifacts-latest-linux-jvm${{ matrix.java }}.zip
linux-build-native-latest:
name: Linux - Native build - Latest Version
runs-on: ubuntu-latest
needs: validate-format
strategy:
matrix:
quarkus-version: [ "999-SNAPSHOT" ]
java: [ 17 ]
outputs:
has-flaky-tests: ${{steps.flaky-test-detector.outputs.has-flaky-tests}}
steps:
- uses: actions/checkout@v4
- name: Reclaim Disk Space
run: .github/ci-prerequisites.sh
- name: Install JDK {{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
check-latest: true
cache: 'maven'
- uses: ./.github/actions/prepare-quarkus-cli
- name: Build
run: |
mvn -B --no-transfer-progress -fae -s .github/quarkus-snapshots-mvn-settings.xml clean install -Pframework,examples,native -Drun-cli-tests -Dts.quarkus.cli.cmd="${PWD}/quarkus-dev-cli" -Dquarkus.platform.version="${{ matrix.quarkus-version }}"
- name: Detect flaky tests
id: flaky-test-detector
shell: bash
if: ${{ hashFiles('**/flaky-run-report.json') != '' }}
run: echo "has-flaky-tests=true" >> "$GITHUB_OUTPUT"
- name: Rename flaky test run report to avoid file name conflicts
id: rename-flaky-test-run-report
if: ${{ hashFiles('**/flaky-run-report.json') != '' }}
shell: bash
run: mv target/flaky-run-report.json target/flaky-run-report-linux-native-latest.json
- name: Archive flaky run report
id: archive-flaky-run-report
if: ${{ hashFiles('**/flaky-run-report-linux-native-latest.json') != '' }}
uses: actions/upload-artifact@v4
with:
name: flaky-run-report-linux-native-latest
path: target/flaky-run-report-linux-native-latest.json
- name: Zip Artifacts
run: |
zip -R artifacts-latest-linux-native{{ matrix.java }}.zip '*-reports/*'
- name: Archive artifacts
uses: actions/upload-artifact@v4
with:
name: artifacts-latest-linux-native{{ matrix.java }}
path: artifacts-latest-linux-native${{ matrix.java }}.zip
windows-build-jvm-latest:
name: Windows - JVM build - Latest Version
runs-on: windows-latest
needs: validate-format
strategy:
matrix:
java: [ 17 ]
quarkus-version: ["999-SNAPSHOT"]
outputs:
has-flaky-tests: ${{steps.flaky-test-detector.outputs.has-flaky-tests}}
steps:
- uses: actions/checkout@v4
- name: Install JDK {{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
check-latest: true
cache: 'maven'
- name: Build in JVM mode
shell: bash
run: |
mvn -B --no-transfer-progress -fae -s .github/quarkus-snapshots-mvn-settings.xml clean install -Pframework,examples -Dquarkus.platform.version="${{ matrix.quarkus-version }}"
- name: Detect flaky tests
shell: bash
id: flaky-test-detector
if: ${{ hashFiles('**/flaky-run-report.json') != '' }}
run: echo "has-flaky-tests=true" >> "$GITHUB_OUTPUT"
- name: Rename flaky test run report to avoid file name conflicts
id: rename-flaky-test-run-report
if: ${{ hashFiles('**/flaky-run-report.json') != '' }}
shell: bash
run: mv target/flaky-run-report.json target/flaky-run-report-windows-jvm-latest.json
- name: Archive flaky run report
id: archive-flaky-run-report
if: ${{ hashFiles('**/flaky-run-report-windows-jvm-latest.json') != '' }}
uses: actions/upload-artifact@v4
with:
name: flaky-run-report-windows-jvm-latest
path: target/flaky-run-report-windows-jvm-latest.json
- name: Zip Artifacts
shell: bash
if: failure()
run: |
# Disambiguate windows find from cygwin find
/usr/bin/find . -name '*-reports/*' -type d | tar -czf artifacts-latest-windows-jvm${{ matrix.java }}.tar -T -
- name: Archive artifacts
if: failure()
uses: actions/upload-artifact@v4
with:
name: artifacts-latest-windows-jvm${{ matrix.java }}
path: artifacts-latest-windows-jvm${{ matrix.java }}.tar
detect-flaky-tests:
name: Detect flaky tests
runs-on: ubuntu-latest
needs: [linux-build-jvm-latest, linux-build-native-latest, windows-build-jvm-latest]
steps:
- name: Create file with information about job with flaky test
if: needs.linux-build-jvm-latest.outputs.has-flaky-tests == 'true' || needs.windows-build-jvm-latest.outputs.has-flaky-tests == 'true' || needs.linux-build-native-latest.outputs.has-flaky-tests
run: |
job_name=""
if $IS_LINUX_JVM_LATEST
then
job_name+=", 'Linux - JVM build - Latest Version'"
fi
if $IS_LINUX_NATIVE_LATEST
then
job_name+=", 'Linux - Native build - Latest Version'"
fi
if $IS_WINDOWS_JVM_LATEST
then
job_name+=", 'Windows - JVM build - Latest Version'"
fi
echo "${job_name:2}" > jobs-with-flaky-tests
env:
IS_LINUX_JVM_LATEST: ${{ needs.linux-build-jvm-latest.outputs.has-flaky-tests == 'true' }}
IS_LINUX_NATIVE_LATEST: ${{ needs.linux-build-native-latest.outputs.has-flaky-tests == 'true' }}
IS_WINDOWS_JVM_LATEST: ${{ needs.windows-build-jvm-latest.outputs.has-flaky-tests == 'true' }}
- name: Archive 'jobs-with-flaky-tests' artifact
if: ${{ hashFiles('**/jobs-with-flaky-tests') != '' }}
uses: actions/upload-artifact@v4
with:
name: jobs-with-flaky-tests
path: jobs-with-flaky-tests
- name: Save PR number
if: ${{ hashFiles('**/jobs-with-flaky-tests') != '' }}
env:
PR_NUMBER: ${{ github.event.number }}
run: echo $PR_NUMBER > pr-number
- name: Archive PR number
uses: actions/upload-artifact@v4
if: ${{ hashFiles('**/jobs-with-flaky-tests') != '' }}
with:
name: pr-number
path: pr-number