@@ -150,6 +150,9 @@ jobs:
150
150
m2-cache-key : ${{ steps.cache-key.outputs.m2-cache-key }}
151
151
quarkus-metadata-cache-key : ${{ steps.cache-key.outputs.quarkus-metadata-cache-key }}
152
152
quarkus-metadata-cache-key-default : ${{ steps.cache-key.outputs.quarkus-metadata-cache-key-default }}
153
+ maven-disable-gib : ${{ steps.gib-status.outputs.maven-disable-gib }}
154
+ maven-disable-develocity-cache : ${{ steps.develocity-cache-status.outputs.maven-disable-develocity-cache }}
155
+ common-maven-args : ${{ steps.configure-maven-args.outputs.common-maven-args }}
153
156
steps :
154
157
- name : Set up JDK 21
155
158
uses : actions/setup-java@v4
@@ -177,16 +180,36 @@ jobs:
177
180
main-repository : quarkusio/quarkus
178
181
runs-on : true
179
182
magic-cache : true
183
+ - name : Determines if GIB should be disabled
184
+ id : gib-status
185
+ run : |
186
+ echo "maven-disable-gib=${{ contains( github.event.pull_request.labels.*.name, 'ci/disable-gib') }}" >> $GITHUB_OUTPUT
187
+ - name : Determines if Develocity cache should be disabled
188
+ id : develocity-cache-status
189
+ run : |
190
+ echo "maven-disable-develocity-cache=${{ contains( github.event.pull_request.labels.*.name, 'ci/disable-develocity-cache') }}" >> $GITHUB_OUTPUT
191
+ - name : Adjust Maven args
192
+ id : configure-maven-args
193
+ env :
194
+ DEVELOCITY_CACHE_DISABLED : ${{ steps.develocity-cache-status.outputs.maven-disable-develocity-cache }}
195
+ run : |
196
+ if [ "$DEVELOCITY_CACHE_DISABLED" == "true" ]; then
197
+ echo "common-maven-args=${COMMON_MAVEN_ARGS} -Dno-build-cache" >> $GITHUB_OUTPUT
198
+ else
199
+ echo "common-maven-args=${COMMON_MAVEN_ARGS}" >> $GITHUB_OUTPUT
200
+ fi
201
+
180
202
181
203
build-jdk17 :
182
204
name : " Initial JDK 17 Build"
183
205
needs : [ configure ]
184
206
runs-on : ${{ fromJson(needs.configure.outputs.config).runners['ubuntu-latest'].runsOn || 'ubuntu-latest' }}
185
207
env :
208
+ COMMON_MAVEN_ARGS : ${{ needs.configure.outputs.common-maven-args }}
186
209
RUNS_ON_ENABLED : ${{ fromJson(needs.configure.outputs.config).runners['ubuntu-latest'].runsOn && 'true' || 'false' }}
187
210
outputs :
188
- gib_args : ${{ steps.get-gib-args .outputs.gib_args }}
189
- gib_impacted : ${{ steps.get-gib-impacted .outputs.impacted_modules }}
211
+ gib_args : ${{ steps.get-gib-config .outputs.gib_args }}
212
+ gib_impacted : ${{ steps.get-gib-config .outputs.impacted_modules }}
190
213
steps :
191
214
- uses : runs-on/action@v1
192
215
- name : Gradle Enterprise environment
@@ -256,48 +279,58 @@ jobs:
256
279
./mvnw -T1C $COMMON_MAVEN_ARGS -DskipTests -DskipITs -DskipDocs -Dinvoker.skip -Dskip.gradle.tests -Djbang.skip -Dtruststore.skip -Dno-format -Dtcks -Prelocations clean install
257
280
- name : Verify extension dependencies
258
281
run : ./update-extension-dependencies.sh $COMMON_MAVEN_ARGS
259
- - name : Get GIB arguments
260
- id : get-gib-args
282
+ - name : Configure GIB
283
+ id : get-gib-config
261
284
env :
262
285
PULL_REQUEST_BASE : ${{ github.event.pull_request.base.ref }}
286
+ GIB_DISABLED : ${{ needs.configure.outputs.maven-disable-gib }}
263
287
run : |
264
- # See also: https://github.com/gitflow-incremental-builder/gitflow-incremental-builder#configuration (GIB)
265
- # Common GIB_ARGS for all CI cases (hint: see also root pom.xml):
266
- # - disableSelectedProjectsHandling: required to detect changes in jobs that use -pl
267
- # - untracked: to ignore files created by jobs (and uncommitted to be consistent)
268
- GIB_ARGS="-Dincremental -Dgib.disableSelectedProjectsHandling -Dgib.untracked=false -Dgib.uncommitted=false"
269
- if [ -n "$PULL_REQUEST_BASE" ]
270
- then
271
- # The PR defines a clear merge target so just use that branch for reference, *unless*:
272
- # - the current branch is a backport branch targeting some released branch like 1.10 (merge target is not main)
273
- GIB_ARGS+=" -Dgib.referenceBranch=origin/$PULL_REQUEST_BASE -Dgib.disableIfReferenceBranchMatches='origin/\d+\.\d+'"
288
+ if [ "$GIB_DISABLED" == "true" ]; then
289
+ GIB_ARGS=''
290
+ GIB_IMPACTED='_all_'
274
291
else
275
- # No PR means the merge target is uncertain so fetch & use main of quarkusio/quarkus, *unless*:
276
- # - the current branch is main or some released branch like 1.10
277
- # - the current branch is a backport branch which is going to target some released branch like 1.10 (merge target is not main)
278
- GIB_ARGS+=" -Dgib.referenceBranch=refs/remotes/quarkusio/main -Dgib.fetchReferenceBranch -Dgib.disableIfBranchMatches='main|\d+\.\d+|.*backport.*'"
292
+ # See also: https://github.com/gitflow-incremental-builder/gitflow-incremental-builder#configuration (GIB)
293
+ # Common GIB_ARGS for all CI cases (hint: see also root pom.xml):
294
+ # - disableSelectedProjectsHandling: required to detect changes in jobs that use -pl
295
+ # - untracked: to ignore files created by jobs (and uncommitted to be consistent)
296
+ GIB_ARGS="-Dincremental -Dgib.disableSelectedProjectsHandling -Dgib.untracked=false -Dgib.uncommitted=false"
297
+ if [ -n "$PULL_REQUEST_BASE" ]
298
+ then
299
+ # The PR defines a clear merge target so just use that branch for reference, *unless*:
300
+ # - the current branch is a backport branch targeting some released branch like 1.10 (merge target is not main)
301
+ GIB_ARGS+=" -Dgib.referenceBranch=origin/$PULL_REQUEST_BASE -Dgib.disableIfReferenceBranchMatches='origin/\d+\.\d+'"
302
+ else
303
+ # No PR means the merge target is uncertain so fetch & use main of quarkusio/quarkus, *unless*:
304
+ # - the current branch is main or some released branch like 1.10
305
+ # - the current branch is a backport branch which is going to target some released branch like 1.10 (merge target is not main)
306
+ GIB_ARGS+=" -Dgib.referenceBranch=refs/remotes/quarkusio/main -Dgib.fetchReferenceBranch -Dgib.disableIfBranchMatches='main|\d+\.\d+|.*backport.*'"
307
+ fi
308
+ echo "GIB_ARGS: $GIB_ARGS"
309
+
310
+ # mvnw just for creating gib-impacted.log ("validate" should not waste much time if not incremental at all, e.g. on main)
311
+ ./mvnw -q -T1C $COMMON_MAVEN_ARGS -Dscan=false -Dtcks -Dquickly-ci $GIB_ARGS -Dgib.logImpactedTo=gib-impacted.log validate
312
+ if [ -f gib-impacted.log ]
313
+ then
314
+ GIB_IMPACTED=$(cat gib-impacted.log)
315
+ else
316
+ GIB_IMPACTED='_all_'
317
+ fi
279
318
fi
280
- echo "GIB_ARGS: $GIB_ARGS"
319
+
281
320
echo "gib_args=${GIB_ARGS}" >> $GITHUB_OUTPUT
282
- - name : Get GIB impacted modules
283
- id : get-gib-impacted
284
- # mvnw just for creating gib-impacted.log ("validate" should not waste much time if not incremental at all, e.g. on main)
285
- run : |
286
- ./mvnw -q -T1C $COMMON_MAVEN_ARGS -Dscan=false -Dtcks -Dquickly-ci ${{ steps.get-gib-args.outputs.gib_args }} -Dgib.logImpactedTo=gib-impacted.log validate
287
- if [ -f gib-impacted.log ]
288
- then
289
- GIB_IMPACTED=$(cat gib-impacted.log)
290
- else
291
- GIB_IMPACTED='_all_'
292
- fi
293
321
echo "GIB_IMPACTED: ${GIB_IMPACTED}"
294
322
# three steps to retain linefeeds in output for other jobs
295
323
# (see https://github.com/github/docs/issues/21529 and https://github.com/orgs/community/discussions/26288#discussioncomment-3876281)
296
324
echo 'impacted_modules<<EOF' >> $GITHUB_OUTPUT
297
325
echo "${GIB_IMPACTED}" >> $GITHUB_OUTPUT
298
326
echo 'EOF' >> $GITHUB_OUTPUT
299
327
- name : Tar .m2 content pushed to subsequent jobs
300
- run : tar -czf m2-content.tgz -C ~ .m2/repository/io/quarkus .m2/.develocity/build-cache
328
+ run : |
329
+ if [ -d .m2/.develocity/build-cache ]; then
330
+ tar -czf m2-content.tgz -C ~ .m2/repository/io/quarkus .m2/.develocity/build-cache
331
+ else
332
+ tar -czf m2-content.tgz -C ~ .m2/repository/io/quarkus
333
+ fi
301
334
- name : Upload .m2 content pushed to subsequent jobs
302
335
uses : actions/upload-artifact@v4
303
336
with :
@@ -395,6 +428,7 @@ jobs:
395
428
timeout-minutes : 400
396
429
env :
397
430
MAVEN_OPTS : ${{ matrix.java.maven_opts }}
431
+ COMMON_MAVEN_ARGS : ${{ needs.configure.outputs.common-maven-args }}
398
432
JAVA_VERSION_GRADLE : ${{ matrix.java.java-version-gradle || matrix.java.java-version }}
399
433
RUNS_ON_ENABLED : ${{ fromJson(needs.configure.outputs.config).runners[matrix.java.os-name].runsOn && 'true' || 'false' }}
400
434
strategy :
@@ -552,6 +586,7 @@ jobs:
552
586
needs : [configure, build-jdk17, calculate-test-jobs]
553
587
env :
554
588
MAVEN_OPTS : -Xmx2g -XX:MaxMetaspaceSize=1g
589
+ COMMON_MAVEN_ARGS : ${{ needs.configure.outputs.common-maven-args }}
555
590
RUNS_ON_ENABLED : ${{ fromJson(needs.configure.outputs.config).runners[matrix.java.os-name].runsOn && 'true' || 'false' }}
556
591
# Skip main in forks
557
592
if : needs.calculate-test-jobs.outputs.run_maven == 'true'
@@ -661,6 +696,7 @@ jobs:
661
696
env :
662
697
# leave more space for the actual gradle execution (which is just wrapped by maven)
663
698
MAVEN_OPTS : -Xmx1g
699
+ COMMON_MAVEN_ARGS : ${{ needs.configure.outputs.common-maven-args }}
664
700
RUNS_ON_ENABLED : ${{ fromJson(needs.configure.outputs.config).runners[matrix.java.os-name].runsOn && 'true' || 'false' }}
665
701
# Skip main in forks
666
702
if : needs.calculate-test-jobs.outputs.run_gradle == 'true'
@@ -753,6 +789,7 @@ jobs:
753
789
# Skip main in forks
754
790
if : needs.calculate-test-jobs.outputs.run_devtools == 'true'
755
791
env :
792
+ COMMON_MAVEN_ARGS : ${{ needs.configure.outputs.common-maven-args }}
756
793
RUNS_ON_ENABLED : ${{ fromJson(needs.configure.outputs.config).runners[matrix.java.os-name].runsOn && 'true' || 'false' }}
757
794
timeout-minutes : 60
758
795
strategy :
@@ -852,6 +889,7 @@ jobs:
852
889
# Skip main in forks
853
890
if : needs.calculate-test-jobs.outputs.run_kubernetes == 'true'
854
891
env :
892
+ COMMON_MAVEN_ARGS : ${{ needs.configure.outputs.common-maven-args }}
855
893
RUNS_ON_ENABLED : ${{ fromJson(needs.configure.outputs.config).runners[matrix.java.os-name].runsOn && 'true' || 'false' }}
856
894
timeout-minutes : 40
857
895
strategy :
@@ -951,6 +989,7 @@ jobs:
951
989
# Skip main in forks
952
990
if : needs.calculate-test-jobs.outputs.run_quickstarts == 'true'
953
991
env :
992
+ COMMON_MAVEN_ARGS : ${{ needs.configure.outputs.common-maven-args }}
954
993
RUNS_ON_ENABLED : ${{ fromJson(needs.configure.outputs.config).runners[matrix.java.os-name].runsOn && 'true' || 'false' }}
955
994
timeout-minutes : 90
956
995
strategy :
@@ -1040,13 +1079,111 @@ jobs:
1040
1079
build-reports.zip
1041
1080
retention-days : 7
1042
1081
1082
+ platform-tests :
1083
+ name : Platform Tests - JDK ${{matrix.java.name}}
1084
+ runs-on : ${{ fromJson(needs.configure.outputs.config).runners[matrix.java.os-name].runsOn || matrix.java.os-name }}
1085
+ needs : [configure, build-jdk17, calculate-test-jobs]
1086
+ # Skip main in forks
1087
+ if : ${{ contains( github.event.pull_request.labels.*.name, 'ci/test-platform') }}
1088
+ env :
1089
+ MAVEN_OPTS : -Xmx4096m
1090
+ COMMON_MAVEN_ARGS : ${{ needs.configure.outputs.common-maven-args }}
1091
+ RUNS_ON_ENABLED : ${{ fromJson(needs.configure.outputs.config).runners[matrix.java.os-name].runsOn && 'true' || 'false' }}
1092
+ strategy :
1093
+ fail-fast : false
1094
+ matrix :
1095
+ java :
1096
+ - {
1097
+ name : " 17" ,
1098
+ java-version : 17,
1099
+ os-name : " ubuntu-latest"
1100
+ }
1101
+ steps :
1102
+ - uses : runs-on/action@v1
1103
+ - name : Gradle Enterprise environment
1104
+ run : |
1105
+ echo "GE_TAGS=jdk-${{matrix.java.name}}" >> "$GITHUB_ENV"
1106
+ echo "GE_CUSTOM_VALUES=gh-job-name=Platform Tests - JDK ${{matrix.java.name}}" >> "$GITHUB_ENV"
1107
+ - uses : actions/checkout@v4
1108
+ - name : Restore Maven Repository
1109
+ uses : actions/cache/restore@v4
1110
+ with :
1111
+ path : ~/.m2/repository
1112
+ key : ${{ needs.configure.outputs.m2-cache-key }}
1113
+ restore-keys : |
1114
+ ${{ needs.configure.outputs.m2-monthly-branch-cache-key }}-
1115
+ ${{ needs.configure.outputs.m2-monthly-cache-key }}-
1116
+ - name : Download previously uploaded .m2 content
1117
+ uses : actions/download-artifact@v4
1118
+ with :
1119
+ name : m2-content
1120
+ path : .
1121
+ - name : Extract previously uploaded .m2 content
1122
+ run : tar -xzf m2-content.tgz -C ~
1123
+ - name : Set up JDK ${{ matrix.java.java-version }}
1124
+ uses : actions/setup-java@v4
1125
+ with :
1126
+ distribution : temurin
1127
+ java-version : ${{ matrix.java.java-version }}
1128
+ - name : Setup Develocity Build Scan capture
1129
+ uses :
gradle/develocity-actions/[email protected]
1130
+ with :
1131
+ capture-strategy : ON_DEMAND
1132
+ job-name : " Platform Tests - JDK ${{matrix.java.name}}"
1133
+ add-pr-comment : false
1134
+ add-job-summary : false
1135
+ develocity-access-key : ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
1136
+ develocity-token-expiry : 6
1137
+ - uses : actions/github-script@v7
1138
+ id : get-platform-branch
1139
+ with :
1140
+ result-encoding : string
1141
+ script : |
1142
+ if (process.env.GITHUB_REPOSITORY != 'quarkusio/quarkus') {
1143
+ return 'main'
1144
+ }
1145
+
1146
+ const branch = process.env.GITHUB_BASE_REF ? process.env.GITHUB_BASE_REF : process.env.GITHUB_REF_NAME
1147
+ if (branch == 'main') {
1148
+ return 'main'
1149
+ } else {
1150
+ return branch
1151
+ }
1152
+ - name : Get Quarkus version
1153
+ id : get-quarkus-version
1154
+ run : |
1155
+ echo "quarkus-version=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_OUTPUT
1156
+ - name : Test Platform
1157
+ env :
1158
+ CAPTURE_BUILD_SCAN : true
1159
+ run : |
1160
+ git clone --depth=1 -b ${{ steps.get-platform-branch.outputs.result }} https://github.com/quarkusio/quarkus-platform.git && cd quarkus-platform
1161
+ QUARKUS_VERSION_ARGS="-Dquarkus.version=${{ steps.get-quarkus-version.outputs.quarkus-version }}"
1162
+ export LANG=en_US && ./mvnw ${COMMON_MAVEN_ARGS} ${QUARKUS_VERSION_ARGS} clean install
1163
+ - name : Prepare build reports archive
1164
+ if : always()
1165
+ run : |
1166
+ 7z a -tzip build-reports.zip -r \
1167
+ 'quarkus-platform/**/target/*-reports/TEST-*.xml' \
1168
+ 'quarkus-platform/target/build-report.json' \
1169
+ 'quarkus-platform/LICENSE.txt' \
1170
+ - name : Upload build reports
1171
+ uses : actions/upload-artifact@v4
1172
+ if : always()
1173
+ with :
1174
+ name : " build-reports-${{ github.run_attempt }}-Platform Tests - JDK ${{matrix.java.name}}"
1175
+ path : |
1176
+ build-reports.zip
1177
+ retention-days : 7
1178
+
1043
1179
virtual-thread-native-tests :
1044
1180
name : Native Tests - Virtual Thread - ${{matrix.category}}
1045
1181
runs-on : ${{ fromJson(needs.configure.outputs.config).runners[matrix.os-name].runsOn || matrix.os-name }}
1046
1182
needs : [configure, build-jdk17, calculate-test-jobs]
1047
1183
# Skip main in forks
1048
1184
if : needs.calculate-test-jobs.outputs.virtual_threads_matrix != '{}'
1049
1185
env :
1186
+ COMMON_MAVEN_ARGS : ${{ needs.configure.outputs.common-maven-args }}
1050
1187
RUNS_ON_ENABLED : ${{ fromJson(needs.configure.outputs.config).runners[matrix.os-name].runsOn && 'true' || 'false' }}
1051
1188
timeout-minutes : ${{matrix.timeout}}
1052
1189
strategy :
@@ -1127,6 +1264,7 @@ jobs:
1127
1264
if : needs.calculate-test-jobs.outputs.run_tcks == 'true'
1128
1265
runs-on : ${{ fromJson(needs.configure.outputs.config).runners['ubuntu-latest'].runsOn || 'ubuntu-latest' }}
1129
1266
env :
1267
+ COMMON_MAVEN_ARGS : ${{ needs.configure.outputs.common-maven-args }}
1130
1268
RUNS_ON_ENABLED : ${{ fromJson(needs.configure.outputs.config).runners['ubuntu-latest'].runsOn && 'true' || 'false' }}
1131
1269
timeout-minutes : 150
1132
1270
steps :
@@ -1215,6 +1353,7 @@ jobs:
1215
1353
env :
1216
1354
# leave more space for the actual native compilation and execution
1217
1355
MAVEN_OPTS : -Xmx1g
1356
+ COMMON_MAVEN_ARGS : ${{ needs.configure.outputs.common-maven-args }}
1218
1357
RUNS_ON_ENABLED : ${{ fromJson(needs.configure.outputs.config).runners[matrix.os-name].runsOn && 'true' || 'false' }}
1219
1358
# Skip main in forks
1220
1359
if : needs.calculate-test-jobs.outputs.native_matrix != '{}'
@@ -1409,7 +1548,7 @@ jobs:
1409
1548
build-report :
1410
1549
runs-on : ubuntu-latest
1411
1550
name : Build report
1412
- needs : [build-jdk17,jvm-tests,maven-tests,gradle-tests,devtools-tests,kubernetes-tests,quickstarts-tests,tcks-test,native-tests,virtual-thread-native-tests]
1551
+ needs : [build-jdk17,jvm-tests,maven-tests,gradle-tests,devtools-tests,kubernetes-tests,quickstarts-tests,platform-tests, tcks-test,native-tests,virtual-thread-native-tests]
1413
1552
if : always()
1414
1553
steps :
1415
1554
- uses : runs-on/action@v1
0 commit comments