bQUARKz 42daa49335
Some checks failed
Test / Build occurred while executing withChecks step.
Intrepid/Prometeu/Studio/pipeline/head There was a failure building this commit
Intrepid/Prometeu/Studio/pipeline/pr-master There was a failure building this commit
Tiled Parser and Scene & Palette Management in Studio
2026-04-23 18:08:38 +01:00

46 lines
1.6 KiB
Markdown

---
id: LSN-0044
ticket: jacoco-reports-consolidation
title: Jenkins Alignment with Consolidated JaCoCo Reports
created: 2026-04-07
tags:
- infra
- gradle
- jacoco
- jenkins
---
## Context
The Jenkins pipeline was still wired to an outdated coverage task and module-specific report paths. That made CI brittle after the project moved coverage reporting to the root-level consolidated `jacocoTestReport` task.
## Key Decisions
### Jenkins Reads Root-Level Coverage
**What:** Jenkins should run `./gradlew clean test jacocoTestReport` and publish coverage from the root project report directory.
**Why:** Coverage is aggregated across modules, so CI should not depend on a single application subproject path.
**Trade-offs:** The root task must run after all relevant tests. Jenkins paths must be rooted at the checkout workspace rather than a submodule directory.
## Patterns and Algorithms
The canonical report locations are:
- XML: `build/reports/jacoco/jacocoTestReport/jacocoTestReport.xml`
- HTML: `build/reports/jacoco/jacocoTestReport/html`
Jenkins `recordCoverage` should consume the XML report. Jenkins `publishHTML` should expose the HTML directory.
## Pitfalls
- Do not point Jenkins at `SRS_APP/build/reports/...` or another module-local report when the project expects consolidated root coverage.
- Do not run only the reporting task without ensuring tests have executed first.
- Do not assume Jenkins relative paths start inside a Gradle subproject; treat the checkout root as the base.
## Takeaways
- Root-level coverage aggregation needs root-level CI report paths.
- The Jenkinsfile and Gradle coverage task names must move together.