From 1e0ccf79502910856489212060ad08ca5c55d0e2 Mon Sep 17 00:00:00 2001 From: Sonu Kumar Date: Sun, 3 May 2026 01:08:36 +0530 Subject: [PATCH 1/3] ci: compile main sources in coverage_report job MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The coverage_report job was producing an effectively empty jacocoTestReport.xml (3.4KB vs ~1.1MB locally) because no .class files existed when coverageReportOnly ran — the job checked out source code and downloaded .exec artifacts, but never compiled. JaCoCo's report generator skips packages/classes it cannot resolve, so the merged XML ended up with only entries and no elements. That made coverallsJacoco silently no-op via the "source file set empty, skipping" branch in CoverallsReporter, so "Push coverage to Coveralls" reported success without uploading. Verified by downloading the coverage-report artifact from a recent run and comparing its XML structure against a local build's report. Assisted-By: Claude Code --- .github/workflows/java-ci.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/java-ci.yaml b/.github/workflows/java-ci.yaml index 767cd567..1a284494 100644 --- a/.github/workflows/java-ci.yaml +++ b/.github/workflows/java-ci.yaml @@ -445,6 +445,9 @@ jobs: - name: Set up Gradle uses: gradle/actions/setup-gradle@v4 + - name: Compile main sources + run: ./gradlew compileJava + - name: Download coverage artifacts uses: actions/download-artifact@v4 with: From ecafc8c40ab2be97017595c3e7b5327a178828fd Mon Sep 17 00:00:00 2001 From: Sonu Kumar Date: Sun, 3 May 2026 01:22:25 +0530 Subject: [PATCH 2/3] ci: share compiled classes across jobs via artifact MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 and zero 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 , while running it after compileJava (or with restored classes) produces a 1.1 MB XML with 54 entries — matching the difference between CI's broken report and a healthy local one. Assisted-By: Claude Code --- .github/workflows/java-ci.yaml | 47 ++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/.github/workflows/java-ci.yaml b/.github/workflows/java-ci.yaml index 1a284494..a259b84e 100644 --- a/.github/workflows/java-ci.yaml +++ b/.github/workflows/java-ci.yaml @@ -62,6 +62,17 @@ jobs: - name: Compile test sources run: ./gradlew compileTestJava + - name: Upload compiled classes + uses: actions/upload-artifact@v4 + with: + name: compiled-classes + path: | + **/build/classes/ + **/build/generated/ + **/build/resources/ + if-no-files-found: error + retention-days: 1 + unit_test: needs: build runs-on: ubuntu-latest @@ -86,6 +97,11 @@ jobs: - name: Set up Gradle uses: gradle/actions/setup-gradle@v4 + - name: Download compiled classes + uses: actions/download-artifact@v4 + with: + name: compiled-classes + - name: Run unit tests run: ./gradlew test -DincludeTags=unit @@ -138,6 +154,11 @@ jobs: sudo apt-get install -y redis-server redis-cli --version + - name: Download compiled classes + uses: actions/download-artifact@v4 + with: + name: compiled-classes + - name: Run producer-only tests run: ./gradlew test -DincludeTags=producerOnly @@ -190,6 +211,11 @@ jobs: sudo apt-get install -y redis-server redis-cli --version + - name: Download compiled classes + uses: actions/download-artifact@v4 + with: + name: compiled-classes + - name: Run integration tests run: ./gradlew test -DincludeTags=integration -DexcludeTags=redisCluster,producerOnly,local @@ -260,6 +286,11 @@ jobs: sleep 30 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 + - name: Download compiled classes + uses: actions/download-artifact@v4 + with: + name: compiled-classes + - name: Run Redis cluster tests run: ./gradlew test -DincludeTags=redisCluster @@ -314,6 +345,11 @@ jobs: sudo apt-get install -y redis-server redis-cli --version + - name: Download compiled classes + uses: actions/download-artifact@v4 + with: + name: compiled-classes + - name: Run reactive integration tests run: ./gradlew test -DincludeTags=integration -DexcludeTags=redisCluster,producerOnly,local @@ -382,6 +418,11 @@ jobs: sleep 1 done + - name: Download compiled classes + uses: actions/download-artifact@v4 + with: + name: compiled-classes + - name: Run NATS tests env: NATS_RUNNING: "true" @@ -445,8 +486,10 @@ jobs: - name: Set up Gradle uses: gradle/actions/setup-gradle@v4 - - name: Compile main sources - run: ./gradlew compileJava + - name: Download compiled classes + uses: actions/download-artifact@v4 + with: + name: compiled-classes - name: Download coverage artifacts uses: actions/download-artifact@v4 From e80b4b5b7665fc4fac95d74ba843edf081a96cdd Mon Sep 17 00:00:00 2001 From: Sonu Kumar Date: Sun, 3 May 2026 01:32:00 +0530 Subject: [PATCH 3/3] Revert "ci: share compiled classes across jobs via artifact" This reverts commit ecafc8c40ab2be97017595c3e7b5327a178828fd. --- .github/workflows/java-ci.yaml | 47 ++-------------------------------- 1 file changed, 2 insertions(+), 45 deletions(-) diff --git a/.github/workflows/java-ci.yaml b/.github/workflows/java-ci.yaml index a259b84e..1a284494 100644 --- a/.github/workflows/java-ci.yaml +++ b/.github/workflows/java-ci.yaml @@ -62,17 +62,6 @@ jobs: - name: Compile test sources run: ./gradlew compileTestJava - - name: Upload compiled classes - uses: actions/upload-artifact@v4 - with: - name: compiled-classes - path: | - **/build/classes/ - **/build/generated/ - **/build/resources/ - if-no-files-found: error - retention-days: 1 - unit_test: needs: build runs-on: ubuntu-latest @@ -97,11 +86,6 @@ jobs: - name: Set up Gradle uses: gradle/actions/setup-gradle@v4 - - name: Download compiled classes - uses: actions/download-artifact@v4 - with: - name: compiled-classes - - name: Run unit tests run: ./gradlew test -DincludeTags=unit @@ -154,11 +138,6 @@ jobs: sudo apt-get install -y redis-server redis-cli --version - - name: Download compiled classes - uses: actions/download-artifact@v4 - with: - name: compiled-classes - - name: Run producer-only tests run: ./gradlew test -DincludeTags=producerOnly @@ -211,11 +190,6 @@ jobs: sudo apt-get install -y redis-server redis-cli --version - - name: Download compiled classes - uses: actions/download-artifact@v4 - with: - name: compiled-classes - - name: Run integration tests run: ./gradlew test -DincludeTags=integration -DexcludeTags=redisCluster,producerOnly,local @@ -286,11 +260,6 @@ jobs: sleep 30 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 - - name: Download compiled classes - uses: actions/download-artifact@v4 - with: - name: compiled-classes - - name: Run Redis cluster tests run: ./gradlew test -DincludeTags=redisCluster @@ -345,11 +314,6 @@ jobs: sudo apt-get install -y redis-server redis-cli --version - - name: Download compiled classes - uses: actions/download-artifact@v4 - with: - name: compiled-classes - - name: Run reactive integration tests run: ./gradlew test -DincludeTags=integration -DexcludeTags=redisCluster,producerOnly,local @@ -418,11 +382,6 @@ jobs: sleep 1 done - - name: Download compiled classes - uses: actions/download-artifact@v4 - with: - name: compiled-classes - - name: Run NATS tests env: NATS_RUNNING: "true" @@ -486,10 +445,8 @@ jobs: - name: Set up Gradle uses: gradle/actions/setup-gradle@v4 - - name: Download compiled classes - uses: actions/download-artifact@v4 - with: - name: compiled-classes + - name: Compile main sources + run: ./gradlew compileJava - name: Download coverage artifacts uses: actions/download-artifact@v4