@@ -149,6 +149,20 @@ jobs:
149149 ${{ insert }} : ${{ parameters.TestStepMavenInputs }}
150150 env : ${{ parameters.EnvVars }}
151151
152+ - task : Maven@3
153+ displayName : ' Generate aggregate code coverage report'
154+ condition : and(eq(variables['OsName'], 'Windows'), eq(variables['JavaTestVersion'], '1.11'), eq('${{ parameters.ServiceDirectory }}', 'communication'))
155+ inputs :
156+ mavenPomFile : sdk/${{ parameters.ServiceDirectory }}/pom.xml
157+ options : -Pcoverage
158+ mavenOptions : ' $(MemoryOptions) $(LoggingOptions)'
159+ javaHomeOption : ' JDKVersion'
160+ jdkVersionOption : $(JavaTestVersion)
161+ jdkArchitectureOption : ' x64'
162+ goals : jacoco:report-aggregate
163+ # we want to run this when TestFromSource isn't true
164+ condition : and(succeeded(), ne(variables['TestFromSource'],'true'))
165+
152166 - ${{ parameters.PostRunSteps }}
153167
154168 - ${{ if ne(parameters.DisableAzureResourceCreation, 'true') }} :
@@ -166,3 +180,13 @@ jobs:
166180 testRunTitle : ' Live tests for ${{ parameters.ServiceDirectory }} $(DisplayName)'
167181 ${{ if ne(parameters.TestResultsFiles, '') }} :
168182 testResultsFiles : ${{ parameters.TestResultsFiles }}
183+
184+ # Azure DevOps only seems to respect the last code coverage result published, so only do this for Windows + Java LTS.
185+ # Code coverage reporting is setup only for Track 2 modules.
186+ - task : PublishCodeCoverageResults@1
187+ condition : and(eq(variables['OsName'], 'Windows'), eq(variables['JavaTestVersion'], '1.11'), eq('${{ parameters.ServiceDirectory }}', 'communication'))
188+ inputs :
189+ codeCoverageTool : JaCoCo
190+ summaryFileLocation : sdk/${{ parameters.ServiceDirectory }}/target/site/jacoco-aggregate/jacoco.xml
191+ reportDirectory : sdk/${{ parameters.ServiceDirectory }}/target/site/jacoco-aggregate/
192+ failIfCoverageEmpty : false
0 commit comments