Issue description
CI builds cannot write to the Apache Develocity remote build cache. Every store attempt is rejected with 403: Forbidden, so the remote cache is never populated, never serves a hit, and delivers zero avoidance savings across the whole project.
This is a leftover from the migration to https://develocity.apache.org: the ASF instance requires each project to be explicitly onboarded for remote build caching (a dedicated CI user plus a scoped access key). Grails publishes build scans successfully — that part of the migration worked — but the cache credentials were never provisioned, so the write path is unauthorized.
Evidence
Example scan: https://develocity.apache.org/s/azwtwdv4p6cxa/performance/build-cache#remote-cache-failure-0-0
(Groovy Snapshot Canary Build, branch 8.1.x, Gradle 9.7.1, Develocity plugin 4.5.0)
Console output from that build:
Could not store entry d3ec921920106a66711c237b4c6c1519 in remote build cache
java.lang.RuntimeException: Storing entry at 'https://develocity.apache.org/cache/d3ec921920106a66711c237b4c6c1519' response status 403: Forbidden
at org.gradle.caching.internal.controller.service.BaseRemoteBuildCacheServiceHandle.storeInner(BaseRemoteBuildCacheServiceHandle.java:150)
...
The failures are not fatal, so nothing turns the CI build red — but after the first errors Gradle marks the remote cache disabledDueToError for the remainder of the build.
Proposed resolution
- ASF Infra ticket. Open a ticket with ASF Infra asking them to onboard
apache/grails-core for Develocity remote build caching. They will create a dedicated CI user for Grails and issue an access key scoped to that account, to be exposed only to CI builds.
- Repository secret. Ensure the correct GitHub Actions secret is mapped to the
DEVELOCITY_ACCESS_KEY env var.
- Build configuration. Set the Develocity project ID in the build so cache entries are scoped correctly. Happy to raise the PR for this once the key is provisioned — it is a small change to the
develocity { } blocks.
Raised at the request of James Fredley. cc @jdaugherty @matrei
Issue description
CI builds cannot write to the Apache Develocity remote build cache. Every store attempt is rejected with
403: Forbidden, so the remote cache is never populated, never serves a hit, and delivers zero avoidance savings across the whole project.This is a leftover from the migration to
https://develocity.apache.org: the ASF instance requires each project to be explicitly onboarded for remote build caching (a dedicated CI user plus a scoped access key). Grails publishes build scans successfully — that part of the migration worked — but the cache credentials were never provisioned, so the write path is unauthorized.Evidence
Example scan: https://develocity.apache.org/s/azwtwdv4p6cxa/performance/build-cache#remote-cache-failure-0-0
(
Groovy Snapshot Canary Build, branch8.1.x, Gradle 9.7.1, Develocity plugin 4.5.0)Console output from that build:
The failures are not fatal, so nothing turns the CI build red — but after the first errors Gradle marks the remote cache
disabledDueToErrorfor the remainder of the build.Proposed resolution
apache/grails-corefor Develocity remote build caching. They will create a dedicated CI user for Grails and issue an access key scoped to that account, to be exposed only to CI builds.DEVELOCITY_ACCESS_KEYenv var.develocity { }blocks.Raised at the request of James Fredley. cc @jdaugherty @matrei