Skip to content

Commit ec3de16

Browse files
authored
ci: centralize Gradle caching across GitHub Actions workflows (Stirling-Tools#7546)
## Summary This pull request restructures Gradle dependency caching across the GitHub Actions workflows. The central `gradle-cache-prime` job is responsible for preparing the shared backend Gradle cache. Reusable workflows restore that shared cache without writing to the same key, while independently triggered workflows use isolated cache namespaces. ## What changed ### Shared Gradle cache - Added a stable `gradle-v1-` cache namespace for the shared backend cache. - The cache key includes the runner OS, runner architecture, JDK version, and the relevant Gradle configuration files. - The cache key is calculated before Gradle runs and reused for the later save step. - The prime job performs a lookup first and resolves backend dependencies only when the exact cache is missing. - This prevents Gradle or Spotless changes during the prime step from producing a different save key from the key used by downstream jobs. ### Reusable workflows - Backend, OpenAPI, license, Docker, E2E, and migration workflows restore the shared cache instead of writing to the shared key. - The backend build matrix includes `matrix.jdk-version` in its cache key. - Enterprise, Tauri, and generated-model workflows support the `use_shared_cache` boolean input. - When `use_shared_cache` is enabled, those workflows restore the shared cache. - When it is disabled, they use workflow-specific cache namespaces. ### Independent workflows Independent workflows now use separate cache prefixes, including: - `gradle-license-report-v1-` - `gradle-swagger-v1-` - `gradle-push-docker-v1-` - `gradle-tauri-releases-v1-` - `gradle-deploy-pr-v1-` - `gradle-playwright-e2e-v1-` - `gradle-generated-models-v1-` This prevents them from creating or affecting the shared backend cache before the prime job. ### Build and E2E flow - Removed the `-PnoSpotless` option from the central Gradle dependency-resolution command. - Removed the separate Gradle dependency prime/retry logic from the live E2E workflow. - Connected the Tauri build and generated-models check to the central cache-prime job. ## Motivation Previously, multiple workflows could use and save the same Gradle cache key independently. The first workflow to save the cache could therefore determine its contents, even if it had resolved a different or incomplete set of dependencies. The cache key was also evaluated after some Gradle tasks had run. If Gradle or Spotless modified a file covered by `hashFiles(...)`, the save key could differ from the restore key used by downstream jobs. This change gives the shared cache a single owner, isolates workflow-specific caches, and makes cache usage deterministic across the CI pipeline. ## Expected result - `gradle-cache-prime` is the single writer for the shared backend Gradle cache. - Downstream jobs restore the same cache without competing cache writes. - Independently triggered workflows remain isolated through their own cache namespaces. - Changes to the monitored Gradle configuration files produce a new cache key. - The normal Gradle/Spotless path is included when the shared cache is populated. ## Validation - Compared the cache key expressions and `hashFiles(...)` inputs across the affected workflows. - Verified that the central restore and save steps use the same precomputed key. - CI should confirm that the prime job populates the shared cache and downstream workflows only restore it. ## Checklist - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have performed a self-review of my changes - [ ] I have run the relevant CI checks - [ ] I have tested the workflow changes
1 parent 913601f commit ec3de16

17 files changed

Lines changed: 234 additions & 225 deletions

.github/workflows/PR-Demo-Comment-with-react.yml

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -191,22 +191,19 @@ jobs:
191191
# untrusted tree gets built below - never leave credentials in .git/config
192192
persist-credentials: false
193193

194-
- name: Set up JDK 25
195-
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
196-
with:
197-
java-version: "25"
198-
distribution: "temurin"
199-
200-
- name: Cache Gradle User Home
194+
- name: Cache Gradle
201195
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
202196
with:
203197
path: |
204198
~/.gradle/caches
205199
~/.gradle/wrapper
206-
key: gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
207-
restore-keys: |
208-
gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-
209-
gradle-${{ runner.os }}-${{ runner.arch }}-
200+
key: gradle-deploy-pr-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
201+
202+
- name: Set up JDK 25
203+
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
204+
with:
205+
java-version: "25"
206+
distribution: "temurin"
210207

211208
- name: Install Task
212209
uses: go-task/setup-task@01a4adf9db2d14c1de7a560f09170b6e0df736aa # v2.1.0

.github/workflows/backend-build.yml

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,23 +35,20 @@ jobs:
3535
- name: Checkout repository
3636
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
3737

38+
- name: Restore cache Gradle User Home
39+
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
40+
with:
41+
path: |
42+
~/.gradle/caches
43+
~/.gradle/wrapper
44+
key: gradle-v1-${{ runner.os }}-${{ runner.arch }}-jdk-${{ matrix.jdk-version }}-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
45+
3846
- name: Set up JDK ${{ matrix.jdk-version }}
3947
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
4048
with:
4149
java-version: ${{ matrix.jdk-version }}
4250
distribution: "temurin"
4351

44-
- name: Cache Gradle User Home
45-
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
46-
with:
47-
path: |
48-
~/.gradle/caches
49-
~/.gradle/wrapper
50-
key: gradle-${{ runner.os }}-${{ runner.arch }}-jdk-${{ matrix.jdk-version }}-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
51-
restore-keys: |
52-
gradle-${{ runner.os }}-${{ runner.arch }}-jdk-${{ matrix.jdk-version }}-
53-
gradle-${{ runner.os }}-${{ runner.arch }}-
54-
5552
- name: Install Task
5653
uses: go-task/setup-task@01a4adf9db2d14c1de7a560f09170b6e0df736aa # v2.1.0
5754
- name: Check Java formatting (Spotless)
@@ -156,7 +153,7 @@ jobs:
156153
STIRLING_FLAVOR: ${{ matrix.flavor }}
157154
# Configure the Gradle daemon explicitly; GRADLE_OPTS alone only
158155
# configures the Gradle client JVM.
159-
GRADLE_OPTS: '-Dorg.gradle.jvmargs=-Xmx4g -XX:+UseG1GC'
156+
GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4g -XX:+UseG1GC"
160157

161158
- name: Check Test Reports Exist
162159
if: always()

.github/workflows/build-enterprise.yml

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ name: Enterprise E2E (Playwright)
1515

1616
on:
1717
workflow_call:
18+
inputs:
19+
use_shared_cache:
20+
required: false
21+
type: boolean
22+
default: false
1823
push:
1924
branches: ["main"]
2025
schedule:
@@ -56,21 +61,31 @@ jobs:
5661
egress-policy: audit
5762
- name: Checkout repository
5863
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
59-
- name: Set up JDK 25
60-
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
64+
65+
- name: Restore cache Gradle User Home
66+
if: inputs.use_shared_cache
67+
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
6168
with:
62-
java-version: "25"
63-
distribution: "temurin"
64-
- name: Cache Gradle User Home
69+
path: |
70+
~/.gradle/caches
71+
~/.gradle/wrapper
72+
key: gradle-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
73+
74+
- name: Restore cache Gradle
75+
if: inputs.use_shared_cache == false
6576
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
6677
with:
6778
path: |
6879
~/.gradle/caches
6980
~/.gradle/wrapper
70-
key: gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
71-
restore-keys: |
72-
gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-
73-
gradle-${{ runner.os }}-${{ runner.arch }}-
81+
key: gradle-playwright-e2e-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
82+
83+
- name: Set up JDK 25
84+
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
85+
with:
86+
java-version: "25"
87+
distribution: "temurin"
88+
7489
- name: Set up Node.js
7590
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
7691
with:

.github/workflows/build.yml

Lines changed: 44 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -73,29 +73,48 @@ jobs:
7373
egress-policy: audit
7474
- name: Checkout repository
7575
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
76+
77+
- name: Calculate Gradle cache key
78+
id: gradle-cache-key
79+
shell: bash
80+
run: |
81+
echo "key=gradle-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}" >> "$GITHUB_OUTPUT"
82+
83+
- name: Cache Gradle (lookup-only)
84+
id: cache-gradle-restore
85+
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
86+
with:
87+
path: |
88+
~/.gradle/caches
89+
~/.gradle/wrapper
90+
key: ${{ steps.gradle-cache-key.outputs.key }}
91+
lookup-only: true
92+
7693
- name: Set up JDK 25
94+
if: steps.cache-gradle-restore.outputs.cache-hit != 'true'
7795
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
7896
with:
7997
java-version: "25"
8098
distribution: "temurin"
81-
- name: Cache Gradle User Home
82-
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
83-
with:
84-
path: |
85-
~/.gradle/caches
86-
~/.gradle/wrapper
87-
key: gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
88-
restore-keys: |
89-
gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-
90-
gradle-${{ runner.os }}-${{ runner.arch }}-
99+
91100
- name: Resolve backend dependencies
92-
run: ./gradlew :stirling-pdf:classes -PnoSpotless --no-daemon
101+
if: steps.cache-gradle-restore.outputs.cache-hit != 'true'
102+
run: ./gradlew :stirling-pdf:classes --no-daemon
93103
env:
94104
STIRLING_FLAVOR: saas
95105
MAVEN_USER: ${{ secrets.MAVEN_USER }}
96106
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
97107
MAVEN_PUBLIC_URL: ${{ secrets.MAVEN_PUBLIC_URL }}
98108

109+
- name: Save cache Gradle User Home
110+
if: steps.cache-gradle-restore.outputs.cache-hit != 'true'
111+
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
112+
with:
113+
path: |
114+
~/.gradle/caches
115+
~/.gradle/wrapper
116+
key: ${{ steps.gradle-cache-key.outputs.key }}
117+
99118
build:
100119
needs: [files-changed, gradle-cache-prime]
101120
permissions:
@@ -170,6 +189,8 @@ jobs:
170189
contents: read
171190
uses: ./.github/workflows/build-enterprise.yml
172191
secrets: inherit
192+
with:
193+
use_shared_cache: true
173194

174195
check-licence:
175196
if: needs.files-changed.outputs.build == 'true'
@@ -193,7 +214,14 @@ jobs:
193214

194215
test-build-docker-images:
195216
if: github.event_name == 'pull_request' && needs.files-changed.outputs.project == 'true'
196-
needs: [files-changed, build, check-generateOpenApiDocs, check-licence, gradle-cache-prime]
217+
needs:
218+
[
219+
files-changed,
220+
build,
221+
check-generateOpenApiDocs,
222+
check-licence,
223+
gradle-cache-prime,
224+
]
197225
permissions:
198226
contents: read
199227
packages: read
@@ -205,7 +233,7 @@ jobs:
205233

206234
tauri-build:
207235
if: needs.files-changed.outputs.tauri == 'true'
208-
needs: [files-changed]
236+
needs: [files-changed, gradle-cache-prime]
209237
permissions:
210238
contents: read
211239
pull-requests: write
@@ -219,6 +247,7 @@ jobs:
219247
with:
220248
platform: windows-macos
221249
sign: true
250+
use_shared_cache: true
222251

223252
ai-engine:
224253
if: needs.files-changed.outputs.engine == 'true'
@@ -242,6 +271,8 @@ jobs:
242271
pull-requests: write
243272
uses: ./.github/workflows/check-generated-models.yml
244273
secrets: inherit
274+
with:
275+
use_shared_cache: true
245276

246277
pre-commit:
247278
needs: [files-changed]

.github/workflows/check-generated-models.yml

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ name: Check generated models
99
# post-merge safety net.
1010
on:
1111
workflow_call:
12+
inputs:
13+
use_shared_cache:
14+
required: false
15+
type: boolean
16+
default: false
1217
push:
1318
branches: [main]
1419

@@ -39,22 +44,29 @@ jobs:
3944
engine/uv.lock
4045
cache-suffix: generated-models
4146

42-
- name: Set up JDK 25
43-
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
47+
- name: Restore cache Gradle User Home
48+
if: inputs.use_shared_cache
49+
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
4450
with:
45-
java-version: "25"
46-
distribution: "temurin"
51+
path: |
52+
~/.gradle/caches
53+
~/.gradle/wrapper
54+
key: gradle-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
4755

48-
- name: Cache Gradle User Home
56+
- name: Restore cache Gradle
57+
if: inputs.use_shared_cache == false
4958
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
5059
with:
5160
path: |
5261
~/.gradle/caches
5362
~/.gradle/wrapper
54-
key: gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
55-
restore-keys: |
56-
gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-
57-
gradle-${{ runner.os }}-${{ runner.arch }}-
63+
key: gradle-generated-models-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
64+
65+
- name: Set up JDK 25
66+
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
67+
with:
68+
java-version: "25"
69+
distribution: "temurin"
5870

5971
- name: Set up Node
6072
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0

.github/workflows/check-licence.yml

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,20 @@ jobs:
2121
- name: Checkout repository
2222
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
2323

24+
- name: Restore cache Gradle User Home
25+
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
26+
with:
27+
path: |
28+
~/.gradle/caches
29+
~/.gradle/wrapper
30+
key: gradle-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
31+
2432
- name: Set up JDK 25
2533
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
2634
with:
2735
java-version: "25"
2836
distribution: "temurin"
2937

30-
- name: Cache Gradle User Home
31-
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
32-
with:
33-
path: |
34-
~/.gradle/caches
35-
~/.gradle/wrapper
36-
key: gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
37-
restore-keys: |
38-
gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-
39-
gradle-${{ runner.os }}-${{ runner.arch }}-
40-
4138
- name: Install Task
4239
uses: go-task/setup-task@01a4adf9db2d14c1de7a560f09170b6e0df736aa # v2.1.0
4340
- name: Check licenses for compatibility

.github/workflows/check-openapi.yml

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,20 @@ jobs:
2222
- name: Checkout repository
2323
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
2424

25+
- name: Restore cache Gradle User Home
26+
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
27+
with:
28+
path: |
29+
~/.gradle/caches
30+
~/.gradle/wrapper
31+
key: gradle-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
32+
2533
- name: Set up JDK 25
2634
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
2735
with:
2836
java-version: "25"
2937
distribution: "temurin"
3038

31-
- name: Cache Gradle User Home
32-
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
33-
with:
34-
path: |
35-
~/.gradle/caches
36-
~/.gradle/wrapper
37-
key: gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
38-
restore-keys: |
39-
gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-
40-
gradle-${{ runner.os }}-${{ runner.arch }}-
41-
4239
- name: Install Task
4340
uses: go-task/setup-task@01a4adf9db2d14c1de7a560f09170b6e0df736aa # v2.1.0
4441
- name: Generate OpenAPI documentation

.github/workflows/coverage-aggregate.yml

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,23 +40,20 @@ jobs:
4040
- name: Checkout repository
4141
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
4242

43+
- name: Restore cache Gradle User Home
44+
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
45+
with:
46+
path: |
47+
~/.gradle/caches
48+
~/.gradle/wrapper
49+
key: gradle-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
50+
4351
- name: Set up JDK 25
4452
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
4553
with:
4654
java-version: "25"
4755
distribution: "temurin"
4856

49-
- name: Cache Gradle User Home
50-
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
51-
with:
52-
path: |
53-
~/.gradle/caches
54-
~/.gradle/wrapper
55-
key: gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }}
56-
restore-keys: |
57-
gradle-${{ runner.os }}-${{ runner.arch }}-jdk-25-
58-
gradle-${{ runner.os }}-${{ runner.arch }}-
59-
6057
- name: Install uv
6158
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
6259
with:

0 commit comments

Comments
 (0)