Skip to content

Commit fd4ac9a

Browse files
authored
Merge pull request #47442 from gsmet/disable-caching-in-ci
Add infrastructure to disable GIB and Develocity on specific PRs, and to run the Platform tests
2 parents 4e23e2c + 99010e4 commit fd4ac9a

File tree

1 file changed

+171
-32
lines changed

1 file changed

+171
-32
lines changed

.github/workflows/ci-actions-incremental.yml

+171-32
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,9 @@ jobs:
150150
m2-cache-key: ${{ steps.cache-key.outputs.m2-cache-key }}
151151
quarkus-metadata-cache-key: ${{ steps.cache-key.outputs.quarkus-metadata-cache-key }}
152152
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 }}
153156
steps:
154157
- name: Set up JDK 21
155158
uses: actions/setup-java@v4
@@ -177,16 +180,36 @@ jobs:
177180
main-repository: quarkusio/quarkus
178181
runs-on: true
179182
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+
180202
181203
build-jdk17:
182204
name: "Initial JDK 17 Build"
183205
needs: [ configure ]
184206
runs-on: ${{ fromJson(needs.configure.outputs.config).runners['ubuntu-latest'].runsOn || 'ubuntu-latest' }}
185207
env:
208+
COMMON_MAVEN_ARGS: ${{ needs.configure.outputs.common-maven-args }}
186209
RUNS_ON_ENABLED: ${{ fromJson(needs.configure.outputs.config).runners['ubuntu-latest'].runsOn && 'true' || 'false' }}
187210
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 }}
190213
steps:
191214
- uses: runs-on/action@v1
192215
- name: Gradle Enterprise environment
@@ -256,48 +279,58 @@ jobs:
256279
./mvnw -T1C $COMMON_MAVEN_ARGS -DskipTests -DskipITs -DskipDocs -Dinvoker.skip -Dskip.gradle.tests -Djbang.skip -Dtruststore.skip -Dno-format -Dtcks -Prelocations clean install
257280
- name: Verify extension dependencies
258281
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
261284
env:
262285
PULL_REQUEST_BASE: ${{ github.event.pull_request.base.ref }}
286+
GIB_DISABLED: ${{ needs.configure.outputs.maven-disable-gib }}
263287
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_'
274291
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
279318
fi
280-
echo "GIB_ARGS: $GIB_ARGS"
319+
281320
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
293321
echo "GIB_IMPACTED: ${GIB_IMPACTED}"
294322
# three steps to retain linefeeds in output for other jobs
295323
# (see https://github.com/github/docs/issues/21529 and https://github.com/orgs/community/discussions/26288#discussioncomment-3876281)
296324
echo 'impacted_modules<<EOF' >> $GITHUB_OUTPUT
297325
echo "${GIB_IMPACTED}" >> $GITHUB_OUTPUT
298326
echo 'EOF' >> $GITHUB_OUTPUT
299327
- 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
301334
- name: Upload .m2 content pushed to subsequent jobs
302335
uses: actions/upload-artifact@v4
303336
with:
@@ -395,6 +428,7 @@ jobs:
395428
timeout-minutes: 400
396429
env:
397430
MAVEN_OPTS: ${{ matrix.java.maven_opts }}
431+
COMMON_MAVEN_ARGS: ${{ needs.configure.outputs.common-maven-args }}
398432
JAVA_VERSION_GRADLE: ${{ matrix.java.java-version-gradle || matrix.java.java-version }}
399433
RUNS_ON_ENABLED: ${{ fromJson(needs.configure.outputs.config).runners[matrix.java.os-name].runsOn && 'true' || 'false' }}
400434
strategy:
@@ -552,6 +586,7 @@ jobs:
552586
needs: [configure, build-jdk17, calculate-test-jobs]
553587
env:
554588
MAVEN_OPTS: -Xmx2g -XX:MaxMetaspaceSize=1g
589+
COMMON_MAVEN_ARGS: ${{ needs.configure.outputs.common-maven-args }}
555590
RUNS_ON_ENABLED: ${{ fromJson(needs.configure.outputs.config).runners[matrix.java.os-name].runsOn && 'true' || 'false' }}
556591
# Skip main in forks
557592
if: needs.calculate-test-jobs.outputs.run_maven == 'true'
@@ -661,6 +696,7 @@ jobs:
661696
env:
662697
# leave more space for the actual gradle execution (which is just wrapped by maven)
663698
MAVEN_OPTS: -Xmx1g
699+
COMMON_MAVEN_ARGS: ${{ needs.configure.outputs.common-maven-args }}
664700
RUNS_ON_ENABLED: ${{ fromJson(needs.configure.outputs.config).runners[matrix.java.os-name].runsOn && 'true' || 'false' }}
665701
# Skip main in forks
666702
if: needs.calculate-test-jobs.outputs.run_gradle == 'true'
@@ -753,6 +789,7 @@ jobs:
753789
# Skip main in forks
754790
if: needs.calculate-test-jobs.outputs.run_devtools == 'true'
755791
env:
792+
COMMON_MAVEN_ARGS: ${{ needs.configure.outputs.common-maven-args }}
756793
RUNS_ON_ENABLED: ${{ fromJson(needs.configure.outputs.config).runners[matrix.java.os-name].runsOn && 'true' || 'false' }}
757794
timeout-minutes: 60
758795
strategy:
@@ -852,6 +889,7 @@ jobs:
852889
# Skip main in forks
853890
if: needs.calculate-test-jobs.outputs.run_kubernetes == 'true'
854891
env:
892+
COMMON_MAVEN_ARGS: ${{ needs.configure.outputs.common-maven-args }}
855893
RUNS_ON_ENABLED: ${{ fromJson(needs.configure.outputs.config).runners[matrix.java.os-name].runsOn && 'true' || 'false' }}
856894
timeout-minutes: 40
857895
strategy:
@@ -951,6 +989,7 @@ jobs:
951989
# Skip main in forks
952990
if: needs.calculate-test-jobs.outputs.run_quickstarts == 'true'
953991
env:
992+
COMMON_MAVEN_ARGS: ${{ needs.configure.outputs.common-maven-args }}
954993
RUNS_ON_ENABLED: ${{ fromJson(needs.configure.outputs.config).runners[matrix.java.os-name].runsOn && 'true' || 'false' }}
955994
timeout-minutes: 90
956995
strategy:
@@ -1040,13 +1079,111 @@ jobs:
10401079
build-reports.zip
10411080
retention-days: 7
10421081

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+
10431179
virtual-thread-native-tests:
10441180
name: Native Tests - Virtual Thread - ${{matrix.category}}
10451181
runs-on: ${{ fromJson(needs.configure.outputs.config).runners[matrix.os-name].runsOn || matrix.os-name }}
10461182
needs: [configure, build-jdk17, calculate-test-jobs]
10471183
# Skip main in forks
10481184
if: needs.calculate-test-jobs.outputs.virtual_threads_matrix != '{}'
10491185
env:
1186+
COMMON_MAVEN_ARGS: ${{ needs.configure.outputs.common-maven-args }}
10501187
RUNS_ON_ENABLED: ${{ fromJson(needs.configure.outputs.config).runners[matrix.os-name].runsOn && 'true' || 'false' }}
10511188
timeout-minutes: ${{matrix.timeout}}
10521189
strategy:
@@ -1127,6 +1264,7 @@ jobs:
11271264
if: needs.calculate-test-jobs.outputs.run_tcks == 'true'
11281265
runs-on: ${{ fromJson(needs.configure.outputs.config).runners['ubuntu-latest'].runsOn || 'ubuntu-latest' }}
11291266
env:
1267+
COMMON_MAVEN_ARGS: ${{ needs.configure.outputs.common-maven-args }}
11301268
RUNS_ON_ENABLED: ${{ fromJson(needs.configure.outputs.config).runners['ubuntu-latest'].runsOn && 'true' || 'false' }}
11311269
timeout-minutes: 150
11321270
steps:
@@ -1215,6 +1353,7 @@ jobs:
12151353
env:
12161354
# leave more space for the actual native compilation and execution
12171355
MAVEN_OPTS: -Xmx1g
1356+
COMMON_MAVEN_ARGS: ${{ needs.configure.outputs.common-maven-args }}
12181357
RUNS_ON_ENABLED: ${{ fromJson(needs.configure.outputs.config).runners[matrix.os-name].runsOn && 'true' || 'false' }}
12191358
# Skip main in forks
12201359
if: needs.calculate-test-jobs.outputs.native_matrix != '{}'
@@ -1409,7 +1548,7 @@ jobs:
14091548
build-report:
14101549
runs-on: ubuntu-latest
14111550
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]
14131552
if: always()
14141553
steps:
14151554
- uses: runs-on/action@v1

0 commit comments

Comments
 (0)