6060 with :
6161 filters : .github/config/.files.yaml
6262
63- build :
63+ gradle-cache-prime :
64+ name : Prime shared Gradle cache
6465 needs : [files-changed]
66+ runs-on : ubuntu-latest
67+ timeout-minutes : 15
68+ steps :
69+ - name : Harden the runner (Audit all outbound calls)
70+ uses : step-security/harden-runner@bf7454d06d71f1098171f2acdf0cd4708d7b5920 # v2.20.0
71+ with :
72+ egress-policy : audit
73+ - name : Checkout repository
74+ uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
75+ - name : Set up JDK 25
76+ uses : actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
77+ with :
78+ java-version : " 25"
79+ distribution : " temurin"
80+ - name : Cache Gradle User Home
81+ uses : actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
82+ with :
83+ path : |
84+ ~/.gradle/caches
85+ ~/.gradle/wrapper
86+ key : gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
87+ restore-keys : |
88+ gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-
89+ gradle-${{ runner.os }}-${{ runner.arch }}-
90+ - name : Resolve backend dependencies
91+ run : ./gradlew :stirling-pdf:classes -PnoSpotless --no-daemon
92+ env :
93+ STIRLING_FLAVOR : saas
94+ MAVEN_USER : ${{ secrets.MAVEN_USER }}
95+ MAVEN_PASSWORD : ${{ secrets.MAVEN_PASSWORD }}
96+ MAVEN_PUBLIC_URL : ${{ secrets.MAVEN_PUBLIC_URL }}
97+
98+ build :
99+ needs : [files-changed, gradle-cache-prime]
65100 permissions :
66101 actions : read
67102 contents : read
@@ -76,15 +111,15 @@ jobs:
76111 # works after Hibernate's ddl-auto=update migrates the schema. Gated on
77112 # the `project` filter so doc-only PRs skip this ~5-minute job.
78113 if : needs.files-changed.outputs.project == 'true'
79- needs : [files-changed]
114+ needs : [files-changed, gradle-cache-prime ]
80115 permissions :
81116 contents : read
82117 uses : ./.github/workflows/db-migration-test.yml
83118 secrets : inherit
84119
85120 check-generateOpenApiDocs :
86121 if : needs.files-changed.outputs.openapi == 'true'
87- needs : [files-changed]
122+ needs : [files-changed, gradle-cache-prime ]
88123 permissions :
89124 contents : read
90125 uses : ./.github/workflows/check-openapi.yml
@@ -120,31 +155,31 @@ jobs:
120155
121156 playwright-e2e-live :
122157 if : needs.files-changed.outputs.frontend == 'true'
123- needs : [files-changed]
158+ needs : [files-changed, gradle-cache-prime ]
124159 permissions :
125160 contents : read
126161 uses : ./.github/workflows/e2e-live.yml
127162 secrets : inherit
128163
129164 playwright-e2e-enterprise :
130165 if : needs.files-changed.outputs.proprietary == 'true'
131- needs : [files-changed]
166+ needs : [files-changed, gradle-cache-prime ]
132167 permissions :
133168 contents : read
134169 uses : ./.github/workflows/build-enterprise.yml
135170 secrets : inherit
136171
137172 check-licence :
138173 if : needs.files-changed.outputs.build == 'true'
139- needs : [files-changed, build]
174+ needs : [files-changed, build, gradle-cache-prime ]
140175 permissions :
141176 contents : read
142177 uses : ./.github/workflows/check-licence.yml
143178 secrets : inherit
144179
145180 docker-compose-tests :
146181 if : needs.files-changed.outputs.project == 'true'
147- needs : [files-changed]
182+ needs : [files-changed, gradle-cache-prime ]
148183 permissions :
149184 actions : write
150185 contents : read
@@ -156,7 +191,7 @@ jobs:
156191
157192 test-build-docker-images :
158193 if : github.event_name == 'pull_request' && needs.files-changed.outputs.project == 'true'
159- needs : [files-changed, build, check-generateOpenApiDocs, check-licence]
194+ needs : [files-changed, build, check-generateOpenApiDocs, check-licence, gradle-cache-prime ]
160195 permissions :
161196 contents : read
162197 packages : read
@@ -199,7 +234,7 @@ jobs:
199234 # frontend filter, so a CSS-only PR does not pay for a backend build.
200235 generated-models :
201236 if : needs.files-changed.outputs.generated-models == 'true'
202- needs : [files-changed]
237+ needs : [files-changed, gradle-cache-prime ]
203238 permissions :
204239 contents : read
205240 pull-requests : write
0 commit comments