Quarkus Early Access JDK Build #154
This file contains 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
name: Quarkus Early Access JDK Build | |
on: | |
schedule: | |
# midnight every weekday + saturday | |
- cron: '0 0 * * 1-6' | |
workflow_dispatch: | |
inputs: | |
jdkVersion: | |
description: 'JDK version' | |
required: true | |
# make sure to keep the matrix entries (see below) in sync! | |
default: '21' | |
jdkDistribution: | |
description: 'JDK distribution' | |
required: true | |
# make sure to keep the matrix entries (see below) in sync! | |
default: 'jdk.java.net' | |
env: | |
# Workaround testsuite locale issue | |
LANG: en_US.UTF-8 | |
MAVEN_OPTS: -Xmx2g -XX:MaxMetaspaceSize=1g | |
JVM_TEST_MAVEN_OPTS: "-e -B --settings .github/mvn-settings.xml -Dtest-containers -Dstart-containers -Dtest-resteasy-reactive-large-files -Dformat.skip" | |
DB_USER: hibernate_orm_test | |
DB_PASSWORD: hibernate_orm_test | |
DB_NAME: hibernate_orm_test | |
jobs: | |
linux-jvm-test: | |
name: JVM Tests - Early Access JDK ${{ matrix.version }} Build - ${{ matrix.dist }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
# This is complex because we want to use a different matrix when using workflow_dispatch. | |
# See https://docs.github.com/en/actions/learn-github-actions/expressions#example-returning-a-json-object | |
# for the code that inspired this. | |
# The first matrix (with a single entry) gets executed when using workflow_dispatch only. | |
# The second matrix (with multiple entries) get executed when NOT using workflow_dispatch. | |
# When adding a newer JDK here, make sure to update the defaults of workflow_dispatch inputs (see top of this file). | |
matrix: >- | |
${{ | |
fromJSON( | |
github.event_name == 'workflow_dispatch' | |
&& format( '{{ "include": [{{ "version": "{0}", "dist": "{1}" }}] }}', | |
github.event.inputs.jdkVersion, github.event.inputs.jdkDistribution ) | |
|| '{ "include": [{ "version": 20, "dist": "jdk.java.net" }, { "version": 21, "dist": "jdk.java.net" }] }' | |
) | |
}} | |
if: "github.repository == 'quarkusio/quarkus' || github.event_name == 'workflow_dispatch'" | |
timeout-minutes: 360 | |
env: | |
MAVEN_OPTS: -Xmx2048m -XX:MaxMetaspaceSize=1000m | |
steps: | |
- name: Set up JDK from jdk.java.net | |
if: matrix.dist == 'jdk.java.net' | |
uses: oracle-actions/setup-java@v1 | |
with: | |
website: jdk.java.net | |
release: ${{ matrix.version }} | |
- name: Set up JDK from other provider than jdk.java.net | |
if: matrix.dist != 'jdk.java.net' | |
uses: actions/setup-java@v4 | |
with: | |
distribution: ${{ matrix.dist }} | |
java-version: ${{ matrix.version }} | |
- name: Print Java version | |
shell: bash | |
run: java -version | |
- name: Stop mysql | |
shell: bash | |
run: | | |
ss -ln | |
sudo service mysql stop || true | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event_name == 'workflow_dispatch' && github.event.ref || 'main' }} | |
- name: Reclaim Disk Space | |
run: .github/ci-prerequisites.sh | |
- name: Get Date | |
id: get-date | |
run: | | |
echo "date=$(/bin/date -u "+%Y-%m")" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Cache Maven Repository | |
id: cache-maven | |
uses: actions/cache@v4 | |
with: | |
path: ~/.m2/repository | |
# refresh cache every month to avoid unlimited growth | |
# also add JDK version to key to avoid poisioning of the CI cache | |
key: q2maven-${{ steps.get-date.outputs.date }}-${{ matrix.version }} | |
- name: Build with Maven | |
# -fae to try to gather as many failures as possible | |
# (but not maven.test.failure.ignore because test report generation is buggy) | |
run: | | |
./mvnw $JVM_TEST_MAVEN_OPTS -Dtcks install -fae | |
# Test reports disabled due to: https://github.com/ScaCap/action-surefire-report/issues/39 | |
#- name: Publish Test Report | |
# if: always() | |
# uses: scacap/action-surefire-report@v1 | |
# with: | |
# github_token: ${{ secrets.GITHUB_TOKEN }} | |
# # fail required to upload failure archive in subsequent actions | |
# fail_on_test_failures: true | |
#- name: Publish Gradle Test Report | |
# if: always() | |
# uses: scacap/action-surefire-report@v1 | |
# with: | |
# github_token: ${{ secrets.GITHUB_TOKEN }} | |
# # fail required to upload failure archive in subsequent actions | |
# fail_on_test_failures: true | |
# check_name: 'Test Report for Gradle' | |
# report_paths: '**/build/test-results/test/TEST-*.xml' | |
- name: Prepare failure archive (if maven failed) | |
if: failure() | |
shell: bash | |
run: find . -name '*-reports' -type d -o -name '*.log' | tar -czf test-reports.tgz -T - | |
- name: Upload failure Archive (if maven failed) | |
uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: test-reports-linux-jvm${{ matrix.version }} | |
path: 'test-reports.tgz' | |
- name: Delete Local Artifacts From Cache | |
if: always() | |
shell: bash | |
run: rm -r ~/.m2/repository/io/quarkus | |
- name: Report status | |
if: "always() && github.repository == 'quarkusio/quarkus' && github.event_name != 'workflow_dispatch'" | |
shell: bash | |
run: | | |
curl -Ls https://sh.jbang.dev | bash -s - app setup | |
~/.jbang/bin/jbang .github/NativeBuildReport.java \ | |
issueNumber=15867 \ | |
runId=${{ github.run_id }} \ | |
status=${{ job.status }} \ | |
token=${{ secrets.GITHUB_API_TOKEN }} \ | |
issueRepo=${{ github.repository }} \ | |
thisRepo=${{ github.repository }} |