From 6daf2d1903abf38f3b14aa1c81cf0fd670906166 Mon Sep 17 00:00:00 2001 From: James Daugherty Date: Tue, 7 Jul 2026 13:36:20 -0400 Subject: [PATCH 1/3] Adjust caching so we do not overload the 10 gig limit that GitHub provides --- .github/workflows/gradle.yml | 144 ++++++++++++++++++++ .github/workflows/groovy-joint-workflow.yml | 22 +-- 2 files changed, 157 insertions(+), 9 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 30e0138267c..2eb9c1a0cd9 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -36,9 +36,21 @@ jobs: with: distribution: liberica java-version: 17 + - name: "🗄️ Restore dependency jar cache" + uses: actions/cache@v4 + with: + # Cache only downloaded dependency jars and wrapper distributions, never Grails build outputs. + # Keyed by branch version so each release branch maintains its own warm cache. + path: | + ~/.gradle/caches/modules-2 + ~/.gradle/wrapper + key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}- - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 with: + cache-disabled: true # dependency jars are cached by the explicit branch-keyed step above develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }} - name: "🔍 Validate grails-core dependency versions" run: > @@ -68,9 +80,21 @@ jobs: with: distribution: liberica java-version: ${{ matrix.java }} + - name: "🗄️ Restore dependency jar cache" + uses: actions/cache@v4 + with: + # Cache only downloaded dependency jars and wrapper distributions, never Grails build outputs. + # Keyed by branch version so each release branch maintains its own warm cache. + path: | + ~/.gradle/caches/modules-2 + ~/.gradle/wrapper + key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}- - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 with: + cache-disabled: true # dependency jars are cached by the explicit branch-keyed step above develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} - name: "🔍 Setup TestLens" uses: testlens-app/setup-testlens@v1 @@ -120,9 +144,21 @@ jobs: with: distribution: liberica java-version: ${{ matrix.java }} + - name: "🗄️ Restore dependency jar cache" + uses: actions/cache@v4 + with: + # Cache only downloaded dependency jars and wrapper distributions, never Grails build outputs. + # Keyed by branch version so each release branch maintains its own warm cache. + path: | + ~/.gradle/caches/modules-2 + ~/.gradle/wrapper + key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}- - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 with: + cache-disabled: true # dependency jars are cached by the explicit branch-keyed step above develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} - name: "🔍 Setup TestLens" uses: testlens-app/setup-testlens@v1 @@ -153,9 +189,21 @@ jobs: with: distribution: liberica java-version: ${{ matrix.java }} + - name: "🗄️ Restore dependency jar cache" + uses: actions/cache@v4 + with: + # Cache only downloaded dependency jars and wrapper distributions, never Grails build outputs. + # Keyed by branch version so each release branch maintains its own warm cache. + path: | + ~/.gradle/caches/modules-2 + ~/.gradle/wrapper + key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}- - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 with: + cache-disabled: true # dependency jars are cached by the explicit branch-keyed step above develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} - name: "🔍 Setup TestLens" uses: testlens-app/setup-testlens@v1 @@ -184,9 +232,21 @@ jobs: with: distribution: 'liberica' java-version: ${{ matrix.java }} + - name: "🗄️ Restore dependency jar cache" + uses: actions/cache@v4 + with: + # Cache only downloaded dependency jars and wrapper distributions, never Grails build outputs. + # Keyed by branch version so each release branch maintains its own warm cache. + path: | + ~/.gradle/caches/modules-2 + ~/.gradle/wrapper + key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}- - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 with: + cache-disabled: true # dependency jars are cached by the explicit branch-keyed step above develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} - name: "🔍 Setup TestLens" uses: testlens-app/setup-testlens@v1 @@ -242,9 +302,21 @@ jobs: with: distribution: liberica java-version: ${{ matrix.java }} + - name: "🗄️ Restore dependency jar cache" + uses: actions/cache@v4 + with: + # Cache only downloaded dependency jars and wrapper distributions, never Grails build outputs. + # Keyed by branch version so each release branch maintains its own warm cache. + path: | + ~/.gradle/caches/modules-2 + ~/.gradle/wrapper + key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}- - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 with: + cache-disabled: true # dependency jars are cached by the explicit branch-keyed step above develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} - name: "🔍 Setup TestLens" uses: testlens-app/setup-testlens@v1 @@ -278,9 +350,21 @@ jobs: with: distribution: liberica java-version: ${{ matrix.java }} + - name: "🗄️ Restore dependency jar cache" + uses: actions/cache@v4 + with: + # Cache only downloaded dependency jars and wrapper distributions, never Grails build outputs. + # Keyed by branch version so each release branch maintains its own warm cache. + path: | + ~/.gradle/caches/modules-2 + ~/.gradle/wrapper + key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}- - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 with: + cache-disabled: true # dependency jars are cached by the explicit branch-keyed step above develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} - name: "🏃 Run Functional Tests" env: @@ -311,9 +395,21 @@ jobs: with: distribution: liberica java-version: ${{ matrix.java }} + - name: "🗄️ Restore dependency jar cache" + uses: actions/cache@v4 + with: + # Cache only downloaded dependency jars and wrapper distributions, never Grails build outputs. + # Keyed by branch version so each release branch maintains its own warm cache. + path: | + ~/.gradle/caches/modules-2 + ~/.gradle/wrapper + key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}- - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 with: + cache-disabled: true # dependency jars are cached by the explicit branch-keyed step above develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} - name: "🏃 Run Functional Tests" env: @@ -339,9 +435,21 @@ jobs: with: distribution: liberica java-version: 17 + - name: "🗄️ Restore dependency jar cache" + uses: actions/cache@v4 + with: + # Cache only downloaded dependency jars and wrapper distributions, never Grails build outputs. + # Keyed by branch version so each release branch maintains its own warm cache. + path: | + ~/.gradle/caches/modules-2 + ~/.gradle/wrapper + key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}- - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 with: + cache-disabled: true # dependency jars are cached by the explicit branch-keyed step above develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} - name: "🔍 Setup TestLens" uses: testlens-app/setup-testlens@v1 @@ -389,9 +497,21 @@ jobs: with: distribution: liberica java-version: 17 + - name: "🗄️ Restore dependency jar cache" + uses: actions/cache@v4 + with: + # Cache only downloaded dependency jars and wrapper distributions, never Grails build outputs. + # Keyed by branch version so each release branch maintains its own warm cache. + path: | + ~/.gradle/caches/modules-2 + ~/.gradle/wrapper + key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}- - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 with: + cache-disabled: true # dependency jars are cached by the explicit branch-keyed step above develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} - name: "🔍 Setup TestLens" uses: testlens-app/setup-testlens@v1 @@ -443,9 +563,21 @@ jobs: with: distribution: liberica java-version: 17 + - name: "🗄️ Restore dependency jar cache" + uses: actions/cache@v4 + with: + # Cache only downloaded dependency jars and wrapper distributions, never Grails build outputs. + # Keyed by branch version so each release branch maintains its own warm cache. + path: | + ~/.gradle/caches/modules-2 + ~/.gradle/wrapper + key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}- - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 with: + cache-disabled: true # dependency jars are cached by the explicit branch-keyed step above develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} - name: "🔍 Setup TestLens" uses: testlens-app/setup-testlens@v1 @@ -542,9 +674,21 @@ jobs: with: distribution: liberica java-version: 17 + - name: "🗄️ Restore dependency jar cache" + uses: actions/cache@v4 + with: + # Cache only downloaded dependency jars and wrapper distributions, never Grails build outputs. + # Keyed by branch version so each release branch maintains its own warm cache. + path: | + ~/.gradle/caches/modules-2 + ~/.gradle/wrapper + key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}- - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 with: + cache-disabled: true # dependency jars are cached by the explicit branch-keyed step above develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} - name: "🔨 Build Snapshot Documentation" run: > diff --git a/.github/workflows/groovy-joint-workflow.yml b/.github/workflows/groovy-joint-workflow.yml index a58589042b3..270ea10b98c 100644 --- a/.github/workflows/groovy-joint-workflow.yml +++ b/.github/workflows/groovy-joint-workflow.yml @@ -40,11 +40,6 @@ jobs: with: java-version: 17 distribution: liberica - - name: "🗄️ Cache local Maven repository" - uses: actions/cache@v4 - with: - path: ~/.m2/repository - key: cache-local-maven-${{ github.sha }} - name: "📥 Checkout Grails Core to fetch Gradle Plugin versions it uses" uses: actions/checkout@v6 with: @@ -65,6 +60,7 @@ jobs: - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 with: + cache-disabled: true # this workflow rebuilds Groovy each run; a Gradle home cache is not useful here develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} - name: "🔍 Setup TestLens" uses: testlens-app/setup-testlens@v1 @@ -123,6 +119,13 @@ jobs: run: | cd groovy ./gradlew pTML -x groovydoc -x javadoc -x javadocAll -x groovydocAll -x asciidoc -x docGDK + - name: "📤 Share locally built Groovy artifacts with the build_grails job" + uses: actions/upload-artifact@v7.0.1 + with: + name: local-groovy-maven-repo + path: ~/.m2/repository/org/apache/groovy/ + if-no-files-found: 'error' + retention-days: 1 build_grails: needs: [build_groovy] @@ -148,14 +151,15 @@ jobs: - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 with: + cache-disabled: true # this workflow rebuilds Groovy each run; a Gradle home cache is not useful here develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} - name: "🔍 Setup TestLens" uses: testlens-app/setup-testlens@v1 - - name: "🗄️ Restore local Maven repository from cache" - uses: actions/cache@v4 + - name: "📥 Fetch the locally built Groovy artifacts" + uses: actions/download-artifact@v7.0.0 with: - path: ~/.m2/repository - key: cache-local-maven-${{ github.sha }} + name: local-groovy-maven-repo + path: ~/.m2/repository/org/apache/groovy - name: 'Swap Groovy Version' run: | sed -i "/['\"]groovy\.version['\"][[:space:]]*:/c\'groovy.version':'${{ needs.build_groovy.outputs.groovyVersion }}'," dependencies.gradle From 9e381f5c41144b651c133b2dbf32872fbacecdac Mon Sep 17 00:00:00 2001 From: James Daugherty Date: Tue, 7 Jul 2026 15:09:28 -0400 Subject: [PATCH 2/3] Pin upload/download artifacts to same version --- .github/workflows/groovy-joint-workflow.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/groovy-joint-workflow.yml b/.github/workflows/groovy-joint-workflow.yml index 270ea10b98c..a2bb408e9c1 100644 --- a/.github/workflows/groovy-joint-workflow.yml +++ b/.github/workflows/groovy-joint-workflow.yml @@ -156,7 +156,7 @@ jobs: - name: "🔍 Setup TestLens" uses: testlens-app/setup-testlens@v1 - name: "📥 Fetch the locally built Groovy artifacts" - uses: actions/download-artifact@v7.0.0 + uses: actions/download-artifact@v7.0.1 with: name: local-groovy-maven-repo path: ~/.m2/repository/org/apache/groovy From 71208cf975652aba26d0cda95855f1ebf6fb1836 Mon Sep 17 00:00:00 2001 From: James Daugherty Date: Wed, 8 Jul 2026 14:07:37 -0400 Subject: [PATCH 3/3] Fix nonexistent download-artifact v7.0.1 tag in groovy joint workflow actions/download-artifact has no v7.0.1 release (its version line jumped from v7.0.0 to v8.x). Pin download-artifact to v8.0.1 and upload-artifact to v7.0.1 by SHA, matching gradle.yml. --- .github/workflows/groovy-joint-workflow.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/groovy-joint-workflow.yml b/.github/workflows/groovy-joint-workflow.yml index 9b419edbc49..7bd19518724 100644 --- a/.github/workflows/groovy-joint-workflow.yml +++ b/.github/workflows/groovy-joint-workflow.yml @@ -120,7 +120,7 @@ jobs: cd groovy ./gradlew pTML -x groovydoc -x javadoc -x javadocAll -x groovydocAll -x asciidoc -x docGDK - name: "📤 Share locally built Groovy artifacts with the build_grails job" - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: local-groovy-maven-repo path: ~/.m2/repository/org/apache/groovy/ @@ -156,7 +156,7 @@ jobs: - name: "🔍 Setup TestLens" uses: testlens-app/setup-testlens@d96a555133c275a00949d2cc77b70fe9a4242ebf # v1.9.2 - name: "📥 Fetch the locally built Groovy artifacts" - uses: actions/download-artifact@v7.0.1 + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: local-groovy-maven-repo path: ~/.m2/repository/org/apache/groovy