Problem
maven-build-test.yaml passes run_jacoco through to maven-build-action, which only generates a badge from whatever reports the single reactor pass leaves behind. For multi-module (multi-subproject) Maven projects this under-reports coverage: each module's bound jacoco:report runs before downstream modules' tests execute, so cross-module coverage attribution is lost and the badge/summary/coverage outputs are structurally wrong.
This is the same defect that produces 0% SonarQube coverage in security-workflows/sonarqube-cloud.yaml (investigated in lfreleng-actions/security-workflows#53, triggered by OpenDaylight's JJB migration). The build lane and the audit lane share the defect because they share the same maven-build-action invocation pattern — which is also why the fix belongs in the action, not in either workflow.
Fix
Root-cause work is tracked in:
Once those land and release, this repository only needs to bump the maven-build-action pin in maven-build-test.yaml (and re-verify the coverage outputs consumed at jobs.build.outputs.coverage / branch_coverage).
Validation
lfreleng-actions/test-maven-project is multi-module (parent/core/app); assert its badge/summary coverage reflects cross-module test attribution after the bump.
Problem
maven-build-test.yamlpassesrun_jacocothrough tomaven-build-action, which only generates a badge from whatever reports the single reactor pass leaves behind. For multi-module (multi-subproject) Maven projects this under-reports coverage: each module's boundjacoco:reportruns before downstream modules' tests execute, so cross-module coverage attribution is lost and the badge/summary/coverageoutputs are structurally wrong.This is the same defect that produces 0% SonarQube coverage in
security-workflows/sonarqube-cloud.yaml(investigated in lfreleng-actions/security-workflows#53, triggered by OpenDaylight's JJB migration). The build lane and the audit lane share the defect because they share the samemaven-build-actioninvocation pattern — which is also why the fix belongs in the action, not in either workflow.Fix
Root-cause work is tracked in:
run-jacocointerfacemvn-params, so projects with their own aggregation machinery (e.g. OpenDaylight's-Dodl.jacoco.aggregateFile=${GITHUB_WORKSPACE}/...) can drive it through this workflowOnce those land and release, this repository only needs to bump the
maven-build-actionpin inmaven-build-test.yaml(and re-verify the coverage outputs consumed atjobs.build.outputs.coverage/branch_coverage).Validation
lfreleng-actions/test-maven-projectis multi-module (parent/core/app); assert its badge/summary coverage reflects cross-module test attribution after the bump.