You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by jd...@apache.org on 2026/10/12 10:37:26 UTC

(grails-gradle-publish) branch 1.0.x updated: Write the Gradle caches from every release branch

This is an automated email from the ASF dual-hosted git repository.

jdaugherty pushed a commit to branch 1.0.x
in repository https://gitbox.apache.org/repos/asf/grails-gradle-publish.git


The following commit(s) were added to refs/heads/1.0.x by this push:
     new e8b0911  Write the Gradle caches from every release branch
e8b0911 is described below

commit e8b09118843ffd7f650a11e2ee5fce3b1d6d1af5
Author: James Daugherty <jd...@jdresources.net>
AuthorDate: Mon Oct 12 11:37:20 2026 +0100

    Write the Gradle caches from every release branch
    
    The GitHub cache that setup-gradle manages is written only from the repository default
    branch unless told otherwise. The default branch is main, while all development happens
    on the release lines, so every 1.0.x run restored nothing and saved nothing. Set
    cache-read-only so that pushes write and pull requests only read their base branch's
    entries, as grails-core does; GitHub scopes the entries by ref, so each release branch
    keeps its own and a release's tag run serves only a re-run of the same release.
    
    Remote build cache stores to develocity.apache.org were rejected with 403 Forbidden.
    ASF Infra provisioned a Develocity access key with cache write access as the
    GRAILS_DEVELOCITY_ACCESS_KEY organization secret, which the workflows already pass to
    setup-gradle. Declare the Grails Develocity project ID so build scans and cache entries
    are associated with the Grails project, and push only when the exchanged
    DEVELOCITY_ACCESS_KEY is present instead of whenever CI is set, so builds without
    credentials, such as pull requests from forks, no longer attempt stores that are rejected.
---
 .github/workflows/ci.yaml      | 4 ++++
 .github/workflows/rat.yaml     | 2 ++
 .github/workflows/release.yaml | 6 ++++++
 settings.gradle                | 4 +++-
 4 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index a20fad1..557b796 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -49,6 +49,8 @@ jobs:
       - name: "🐘 Setup Gradle"
         uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0
         with:
+          # Every push writes, so each release branch keeps its own entries; a pull request only reads its base branch's.
+          cache-read-only: ${{ github.event_name == 'pull_request' }}
           develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
       - name: "🔨 Build Project (without tests)"
         if: ${{ contains(github.event.head_commit.message, '[skip tests]') }}
@@ -82,6 +84,8 @@ jobs:
       - name: "🐘 Setup Gradle"
         uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0
         with:
+          # Every push writes, so each release branch keeps its own entries; a pull request only reads its base branch's.
+          cache-read-only: ${{ github.event_name == 'pull_request' }}
           develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
       - name: "📤 Publish Snapshot Artifacts"
         env:
diff --git a/.github/workflows/rat.yaml b/.github/workflows/rat.yaml
index 63cebe8..54091d0 100644
--- a/.github/workflows/rat.yaml
+++ b/.github/workflows/rat.yaml
@@ -38,6 +38,8 @@ jobs:
       - name: "🐘 Setup Gradle"
         uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0
         with:
+          # Every push writes, so each release branch keeps its own entries; a pull request only reads its base branch's.
+          cache-read-only: ${{ github.event_name == 'pull_request' }}
           develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
       - name: "🧐 Apache License - Release Audit Tool"
         run: ./gradlew rat
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index 92b0921..5d26137 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -70,6 +70,9 @@ jobs:
       - name: "🐘 Setup Gradle"
         uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0
         with:
+          # A release runs on its tag, which GitHub lets read the default branch's entries but not its release branch's;
+          # what it writes is scoped to that tag, so it serves only a re-run of the same release.
+          cache-read-only: ${{ github.event_name == 'pull_request' }}
           develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
       - name: "⚙️ Run pre-release"
         uses: apache/grails-github-actions/pre-release@v1.0.3
@@ -426,6 +429,9 @@ jobs:
       - name: "🐘 Setup Gradle"
         uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0
         with:
+          # A release runs on its tag, which GitHub lets read the default branch's entries but not its release branch's;
+          # what it writes is scoped to that tag, so it serves only a re-run of the same release.
+          cache-read-only: ${{ github.event_name == 'pull_request' }}
           develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
       - name: "📖 Generate Documentation"
         run: ./gradlew grails-publish:groovydoc
diff --git a/settings.gradle b/settings.gradle
index e088f3c..cd83b7e 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -24,6 +24,7 @@ plugins {
 
 def isCI = System.getenv().containsKey('CI')
 def isLocal = !isCI
+def hasDevelocityAccessKey = System.getenv('DEVELOCITY_ACCESS_KEY') != null
 def isReproducibleBuild = System.getenv('SOURCE_DATE_EPOCH') != null
 if (isReproducibleBuild) {
     gradle.settingsEvaluated {
@@ -34,6 +35,7 @@ if (isReproducibleBuild) {
 
 develocity {
     server = 'https://develocity.apache.org'
+    projectId = 'grails'
     buildScan {
         tag('grails')
         tag('grails-publish-gradle-plugin')
@@ -45,7 +47,7 @@ develocity {
 buildCache {
     local { enabled = (isLocal && !isReproducibleBuild) || (isCI && isReproducibleBuild) }
     remote(develocity.buildCache) {
-        push = isCI
+        push = hasDevelocityAccessKey
         enabled = !isReproducibleBuild
     }
 }