Skip to content

Quarkus Reproducibility Check #9

Quarkus Reproducibility Check

Quarkus Reproducibility Check #9

name: Quarkus Reproducibility Check
permissions:
contents: read
packages: read
on:
schedule:
- cron: '0 3 * * *'
workflow_dispatch:
concurrency:
group: "workflow = ${{ github.workflow }}, ref = ${{ github.event.ref }}"
cancel-in-progress: ${{ github.repository != 'quarkusio/quarkus' }}
env:
LANG: en_US.UTF-8
MAVEN_OPTS: -Xmx3g -XX:MaxMetaspaceSize=1g
COMMON_MAVEN_ARGS: "-e -B --settings .github/mvn-settings.xml --fail-at-end"
QUICK_INSTALL_MAVEN_ARGS: "-Dscalpel.enabled=false -DskipTests -DskipITs -DskipDocs -Dinvoker.skip -Dskip.gradle.tests -Djbang.skip -Dtruststore.skip -Dno-format -Dno-build-cache -Dno-test-modules -Prelocations"
COMMON_TEST_MAVEN_ARGS: "-Dformat.skip -Denforcer.skip -DskipDocs -Dforbiddenapis.skip -DskipExtensionValidation -DskipCodestartValidation"
REPRODUCIBILITY_MAVEN_ARGS: "-Dno-build-cache -Dquarkus-internal.test.reproducibility-check=5"
jobs:
reproducibility-check:
name: ${{ matrix.name }}
runs-on: ubuntu-latest
if: github.repository == 'quarkusio/quarkus' || github.event_name == 'workflow_dispatch'
timeout-minutes: 360
strategy:
fail-fast: false
matrix:
include:
- id: jvm
name: "Deployment JVM Reproducibility Check"
artifact-name: jvm-reproducibility
- id: resteasy-reactive-tck
name: "RESTEasy Reactive TCK Reproducibility Check"
artifact-name: resteasy-reactive-tck-reproducibility
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Set up JDK 21
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: temurin
java-version: 21
- name: Reclaim Disk Space
run: .github/ci-prerequisites.sh
- name: Print disk usage before build
run: .github/ci-disk-usage.sh
- name: Gradle Enterprise environment
run: |
echo "GE_TAGS=jdk-21,reproducibility-check" >> "$GITHUB_ENV"
echo "GE_CUSTOM_VALUES=gh-job-name=${{ matrix.name }}" >> "$GITHUB_ENV"
- name: Setup Develocity Build Scan capture
uses: gradle/develocity-actions/setup-maven@0e1f30c14ab56d0c1ecf229a0ffc3eb3e40e4642 # v2.2
with:
capture-strategy: ON_DEMAND
job-name: ${{ matrix.name }}
add-pr-comment: false
add-job-summary: false
develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
develocity-token-expiry: 6
- name: Build Quarkus
run: ./mvnw $COMMON_MAVEN_ARGS $QUICK_INSTALL_MAVEN_ARGS -pl '!docs' clean install
- name: Run deployment JVM reproducibility check
if: matrix.id == 'jvm'
env:
CAPTURE_BUILD_SCAN: true
run: |
deployment_module_list=$(.github/list-deployment-modules.sh)
./mvnw $COMMON_MAVEN_ARGS $COMMON_TEST_MAVEN_ARGS $REPRODUCIBILITY_MAVEN_ARGS -pl "$deployment_module_list" -Dsurefire.timeout=1200 -Dquarkus.test.hang-detection-timeout=300 clean test
- name: Run RESTEasy Reactive TCK reproducibility check
if: matrix.id == 'resteasy-reactive-tck'
env:
CAPTURE_BUILD_SCAN: true
run: ./mvnw $COMMON_MAVEN_ARGS $COMMON_TEST_MAVEN_ARGS $REPRODUCIBILITY_MAVEN_ARGS -Dresteasy-reactive-testsuite.mvn.args="$REPRODUCIBILITY_MAVEN_ARGS" -Dtcks -pl tcks/resteasy-reactive -amd clean test
- name: Print disk usage after build
if: always()
run: .github/ci-disk-usage.sh
- name: Prepare failure archive
if: failure()
run: find . -name '*-reports' -type d -o -name '*.log' | tar -czf test-reports.tgz -T -
- name: Upload failure archive
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: test-reports-${{ matrix.artifact-name }}
path: test-reports.tgz
retention-days: 7
- name: Prepare build reports archive
if: always()
run: |
7z a -tzip build-reports.zip -r \
'**/target/*-reports/TEST-*.xml' \
'**/target/*-reports-*/TEST-*.xml' \
'target/build-report.json' \
'target/gradle-build-scan-url.txt' \
LICENSE
- name: Upload build reports
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: build-reports-${{ github.run_attempt }}-${{ matrix.name }}
path: build-reports.zip
retention-days: 7
- name: Upload reproducibility debug dumps
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: debug-${{ github.run_attempt }}-${{ matrix.name }}
path: '**/target/debug/**'
if-no-files-found: ignore
retention-days: 28
- name: Upload build.log
if: failure() || cancelled()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: build-logs-${{ matrix.name }}
path: '**/build.log'
retention-days: 7