Skip to content

Commit ecafc8c

Browse files
committed
ci: share compiled classes across jobs via artifact
Eight jobs (build + 6 test + coverage_report) were each running their own ./gradlew compile chain on the same SHA, which is wasteful and was also the proximate cause of the silent Coveralls failure: the coverage_report job had no .class files at all because it never ran compileJava, so JaCoCo emitted a report with only <sessioninfo> and zero <package> entries, and coverallsJacoco short-circuited via its "source file set empty, skipping" branch. Compile once in the build job, upload **/build/classes/, generated/, and resources/ as a "compiled-classes" artifact (1-day retention), and download it in every dependent job before running tests or coverageReportOnly. Test jobs still invoke ./gradlew test; gradle's UP-TO-DATE check on the unchanged .java inputs picks up the restored outputs and skips the compile tasks. The coverage_report job now has real bytecode for JaCoCo to map exec data against, so the Coveralls upload actually contains source-file coverage. Verified locally that running coverageReportOnly with no .class files produces a 750-byte XML with only <sessioninfo>, while running it after compileJava (or with restored classes) produces a 1.1 MB XML with 54 <package> entries — matching the difference between CI's broken report and a healthy local one. Assisted-By: Claude Code
1 parent 1e0ccf7 commit ecafc8c

1 file changed

Lines changed: 45 additions & 2 deletions

File tree

.github/workflows/java-ci.yaml

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,17 @@ jobs:
6262
- name: Compile test sources
6363
run: ./gradlew compileTestJava
6464

65+
- name: Upload compiled classes
66+
uses: actions/upload-artifact@v4
67+
with:
68+
name: compiled-classes
69+
path: |
70+
**/build/classes/
71+
**/build/generated/
72+
**/build/resources/
73+
if-no-files-found: error
74+
retention-days: 1
75+
6576
unit_test:
6677
needs: build
6778
runs-on: ubuntu-latest
@@ -86,6 +97,11 @@ jobs:
8697
- name: Set up Gradle
8798
uses: gradle/actions/setup-gradle@v4
8899

100+
- name: Download compiled classes
101+
uses: actions/download-artifact@v4
102+
with:
103+
name: compiled-classes
104+
89105
- name: Run unit tests
90106
run: ./gradlew test -DincludeTags=unit
91107

@@ -138,6 +154,11 @@ jobs:
138154
sudo apt-get install -y redis-server
139155
redis-cli --version
140156
157+
- name: Download compiled classes
158+
uses: actions/download-artifact@v4
159+
with:
160+
name: compiled-classes
161+
141162
- name: Run producer-only tests
142163
run: ./gradlew test -DincludeTags=producerOnly
143164

@@ -190,6 +211,11 @@ jobs:
190211
sudo apt-get install -y redis-server
191212
redis-cli --version
192213
214+
- name: Download compiled classes
215+
uses: actions/download-artifact@v4
216+
with:
217+
name: compiled-classes
218+
193219
- name: Run integration tests
194220
run: ./gradlew test -DincludeTags=integration -DexcludeTags=redisCluster,producerOnly,local
195221

@@ -260,6 +286,11 @@ jobs:
260286
sleep 30
261287
yes yes | redis-cli --cluster create 127.0.0.1:9000 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003 127.0.0.1:9004 127.0.0.1:9005 --cluster-replicas 1
262288
289+
- name: Download compiled classes
290+
uses: actions/download-artifact@v4
291+
with:
292+
name: compiled-classes
293+
263294
- name: Run Redis cluster tests
264295
run: ./gradlew test -DincludeTags=redisCluster
265296

@@ -314,6 +345,11 @@ jobs:
314345
sudo apt-get install -y redis-server
315346
redis-cli --version
316347
348+
- name: Download compiled classes
349+
uses: actions/download-artifact@v4
350+
with:
351+
name: compiled-classes
352+
317353
- name: Run reactive integration tests
318354
run: ./gradlew test -DincludeTags=integration -DexcludeTags=redisCluster,producerOnly,local
319355

@@ -382,6 +418,11 @@ jobs:
382418
sleep 1
383419
done
384420
421+
- name: Download compiled classes
422+
uses: actions/download-artifact@v4
423+
with:
424+
name: compiled-classes
425+
385426
- name: Run NATS tests
386427
env:
387428
NATS_RUNNING: "true"
@@ -445,8 +486,10 @@ jobs:
445486
- name: Set up Gradle
446487
uses: gradle/actions/setup-gradle@v4
447488

448-
- name: Compile main sources
449-
run: ./gradlew compileJava
489+
- name: Download compiled classes
490+
uses: actions/download-artifact@v4
491+
with:
492+
name: compiled-classes
450493

451494
- name: Download coverage artifacts
452495
uses: actions/download-artifact@v4

0 commit comments

Comments
 (0)