@@ -25,138 +25,139 @@ parameters:
2525 default : []
2626
2727jobs :
28- - job : CodeCoverage
29- displayName : ' Merge Code Coverage'
30-
31- variables :
32- uploadTestResult : ${{ parameters.upload }}
33-
34- pool :
35- name : ' ${{ parameters.poolName }}'
36- vmImage : ${{ parameters.image }}
37-
38- steps :
39- - ${{if eq(parameters.debug, true)}} :
40- - powershell : |
41- Get-ChildItem env: | Sort-Object Name
42- displayName: 'List Environment Variables [debug]'
43-
44- - task : NuGetAuthenticate@1
45- displayName : ' NuGet Authenticate'
46-
47- - template : ../steps/ensure-dotnet-version.yml@self
48- parameters :
49- packageType : ' sdk'
50- version : ' 8.0'
51-
52- - ${{ parameters.downloadArtifactsSteps }}
53-
54- - ${{ if eq(parameters.debug, true)}} :
55- - powershell : |
56- Get-ChildItem $(Build.SourcesDirectory)\coverageNetFx\ -Recurse -File -Filter *.coverage
57- displayName: 'List coverageNetFx files [debug]'
58-
59- - powershell : |
60- Get-ChildItem $(Build.SourcesDirectory)\coverageNetCore\ -Recurse -File -Filter *.coverage
61- displayName: 'List coverageNetCore files [debug]'
62-
63- - pwsh : |
64- dotnet tool install --global dotnet-coverage
65-
66- function MergeFiles {
67- param(
68- [string]$InputDirectoryPath,
69- [string]$OutputDirectoryName
70- )
71-
72- $files = Get-ChildItem $InputDirectoryPath -Recurse -File -Filter *.coverage
73-
74- # echo $files
75- mkdir $OutputDirectoryName
76- $counter=0
77-
78- $toProcess = @()
79-
80- foreach ($file in $files) {
81- $toProcess += @{
82- File = $file.FullName
83- OutputFile = "$OutputDirectoryName\$counter.coveragexml"
28+ - job : CodeCoverage
29+ displayName : ' Merge Code Coverage'
30+
31+ variables :
32+ uploadTestResult : ${{ parameters.upload }}
33+
34+ pool :
35+ name : ' ${{ parameters.poolName }}'
36+ vmImage : ${{ parameters.image }}
37+
38+ steps :
39+
40+ # We don't need the source code for this job, so suppress checkout.
41+ - checkout : none
42+
43+ - ${{if eq(parameters.debug, true)}} :
44+ - pwsh : |
45+ Get-ChildItem env: | Sort-Object Name
46+ displayName: 'List Environment Variables [debug]'
47+
48+ - template : ../steps/ensure-dotnet-version.yml@self
49+ parameters :
50+ packageType : ' sdk'
51+ version : ' 10.0'
52+
53+ - ${{ parameters.downloadArtifactsSteps }}
54+
55+ - ${{ if eq(parameters.debug, true)}} :
56+ - pwsh : |
57+ Get-ChildItem $(Build.SourcesDirectory)\coverageNetFx\ -Recurse -File -Filter *.coverage
58+ displayName: 'List coverageNetFx files [debug]'
59+
60+ - pwsh : |
61+ Get-ChildItem $(Build.SourcesDirectory)\coverageNetCore\ -Recurse -File -Filter *.coverage
62+ displayName: 'List coverageNetCore files [debug]'
63+
64+ - pwsh : |
65+ dotnet tool install --global dotnet-coverage
66+
67+ function MergeFiles {
68+ param(
69+ [string]$InputDirectoryPath,
70+ [string]$OutputDirectoryName
71+ )
72+
73+ $files = Get-ChildItem $InputDirectoryPath -Recurse -File -Filter *.coverage
74+
75+ # echo $files
76+ mkdir $OutputDirectoryName
77+ $counter=0
78+
79+ $toProcess = @()
80+
81+ foreach ($file in $files) {
82+ $toProcess += @{
83+ File = $file.FullName
84+ OutputFile = "$OutputDirectoryName\$counter.coveragexml"
85+ }
86+
87+ $counter++
88+ }
89+
90+ $jobs = @()
91+ foreach ($file in $toProcess){
92+ $jobs += Start-ThreadJob -ScriptBlock {
93+ $params = $using:file
94+ & dotnet-coverage merge $($params.File) --output $($params.OutputFile) --output-format xml
95+ }
8496 }
8597
86- $counter++
87- }
88-
89- $jobs = @()
90- foreach ($file in $toProcess){
91- $jobs += Start-ThreadJob -ScriptBlock {
92- $params = $using:file
93- & dotnet-coverage merge $($params.File) --output $($params.OutputFile) --output-format xml
94- }
95- }
96-
97- Write-Host "Merging started..."
98- Wait-Job -Job $jobs
99-
100- foreach ($job in $jobs) {
101- Receive-Job -Job $job -Wait -AutoRemoveJob
102- }
103- }
104-
105- MergeFiles -InputDirectoryPath "$(Build.SourcesDirectory)\coverageNetFx\" -OutputDirectoryName "coverageNetFxXml"
106- MergeFiles -InputDirectoryPath "$(Build.SourcesDirectory)\coverageNetCore\" -OutputDirectoryName "coverageNetCoreXml"
107-
108- # dir coverageNetFxXml\
109- # dir coverageNetCoreXml\
110-
111- Write-Host "Clean up disk ... [removing coverageNetFx & coverageNetCore]"
112-
113- Remove-Item $(Build.SourcesDirectory)\coverageNetFx -Recurse -Force
114- Remove-Item $(Build.SourcesDirectory)\coverageNetCore -Recurse -Force
115-
116- displayName: 'Convert coverage files to xml'
117-
118- - ${{ if eq(parameters.debug, true)}} :
119- - powershell : |
120- dir coverageNetFxXml\
121- dir coverageNetCoreXml\
122- displayName: 'List converted files [debug]'
123-
124- - pwsh : |
125- dotnet tool install dotnet-reportgenerator-globaltool --tool-path tools
126-
127- $jobs = @()
128- $jobs += Start-ThreadJob -ScriptBlock {
129- & tools\reportgenerator "-reports:coverageNetFxXml\*.coveragexml" "-targetdir:coveragereportNetFx" "-reporttypes:Cobertura;" "-assemblyfilters:+microsoft.data.sqlclient.dll" "-sourcedirs:$(Build.SourcesDirectory)\src\Microsoft.Data.SqlClient\netfx\src;$(Build.SourcesDirectory)\src\Microsoft.Data.SqlClient\src" "-classfilters:+Microsoft.Data.*"
130- }
131-
132- $jobs += Start-ThreadJob -ScriptBlock {
133- & tools\reportgenerator "-reports:coverageNetCoreXml\*.coveragexml" "-targetdir:coveragereportAddOns" "-reporttypes:Cobertura;" "-assemblyfilters:+microsoft.data.sqlclient.alwaysencrypted.azurekeyvaultprovider.dll" "-sourcedirs:$(Build.SourcesDirectory)\src\Microsoft.Data.SqlClient\add-ons\AzureKeyVaultProvider" "-classfilters:+Microsoft.Data.*"
134- }
135-
136- $jobs += Start-ThreadJob -ScriptBlock {
137- & tools\reportgenerator "-reports:coverageNetCoreXml\*.coveragexml" "-targetdir:coveragereportNetCore" "-reporttypes:Cobertura;" "-assemblyfilters:+microsoft.data.sqlclient.dll" "-sourcedirs:$(Build.SourcesDirectory)\src\Microsoft.Data.SqlClient\netcore\src;$(Build.SourcesDirectory)\src\Microsoft.Data.SqlClient\src" "-classfilters:+Microsoft.Data.*"
138- }
139-
140- Write-Host "Running ReportGenerator..."
141- Wait-Job -Job $jobs
142-
143- foreach ($job in $jobs) {
144- Receive-Job -Job $job -Wait -AutoRemoveJob
145- }
146- displayName: 'Run ReportGenerator'
147-
148- - task : PublishCodeCoverageResults@2
149- displayName : ' Publish code coverage from netcore'
150- inputs :
151- summaryFileLocation : ' *\Cobertura.xml'
152-
153- - powershell : |
154- #download Codecov CLI
155- $ProgressPreference = 'SilentlyContinue'
156- Invoke-WebRequest -Uri https://cli.codecov.io/latest/windows/codecov.exe -Outfile codecov.exe
157-
158- ./codecov --verbose upload-process --fail-on-error -t $(CODECOV_TOKEN) -f "coveragereportNetFx\Cobertura.xml" -F netfx
159- ./codecov --verbose upload-process --fail-on-error -t $(CODECOV_TOKEN) -f "coveragereportNetCore\Cobertura.xml" -F netcore
160- ./codecov --verbose upload-process --fail-on-error -t $(CODECOV_TOKEN) -f "coveragereportAddOns\Cobertura.xml" -F addons
161- displayName: 'Upload to CodeCov'
162- condition: and(succeeded(), eq(variables['uploadTestResult'], 'true'))
98+ Write-Host "Merging started..."
99+ Wait-Job -Job $jobs
100+
101+ foreach ($job in $jobs) {
102+ Receive-Job -Job $job -Wait -AutoRemoveJob
103+ }
104+ }
105+
106+ MergeFiles -InputDirectoryPath "$(Build.SourcesDirectory)\coverageNetFx\" -OutputDirectoryName "coverageNetFxXml"
107+ MergeFiles -InputDirectoryPath "$(Build.SourcesDirectory)\coverageNetCore\" -OutputDirectoryName "coverageNetCoreXml"
108+
109+ # dir coverageNetFxXml\
110+ # dir coverageNetCoreXml\
111+
112+ Write-Host "Clean up disk ... [removing coverageNetFx & coverageNetCore]"
113+
114+ Remove-Item $(Build.SourcesDirectory)\coverageNetFx -Recurse -Force
115+ Remove-Item $(Build.SourcesDirectory)\coverageNetCore -Recurse -Force
116+
117+ displayName: 'Convert coverage files to xml'
118+
119+ - ${{ if eq(parameters.debug, true)}} :
120+ - pwsh : |
121+ dir coverageNetFxXml\
122+ dir coverageNetCoreXml\
123+ displayName: 'List converted files [debug]'
124+
125+ - pwsh : |
126+ dotnet tool install dotnet-reportgenerator-globaltool --tool-path tools
127+
128+ $jobs = @()
129+ $jobs += Start-ThreadJob -ScriptBlock {
130+ & tools\reportgenerator "-reports:coverageNetFxXml\*.coveragexml" "-targetdir:coveragereportNetFx" "-reporttypes:Cobertura;" "-assemblyfilters:+microsoft.data.sqlclient.dll" "-sourcedirs:$(Build.SourcesDirectory)\src\Microsoft.Data.SqlClient\netfx\src;$(Build.SourcesDirectory)\src\Microsoft.Data.SqlClient\src" "-classfilters:+Microsoft.Data.*"
131+ }
132+
133+ $jobs += Start-ThreadJob -ScriptBlock {
134+ & tools\reportgenerator "-reports:coverageNetCoreXml\*.coveragexml" "-targetdir:coveragereportAddOns" "-reporttypes:Cobertura;" "-assemblyfilters:+microsoft.data.sqlclient.alwaysencrypted.azurekeyvaultprovider.dll" "-sourcedirs:$(Build.SourcesDirectory)\src\Microsoft.Data.SqlClient\add-ons\AzureKeyVaultProvider" "-classfilters:+Microsoft.Data.*"
135+ }
136+
137+ $jobs += Start-ThreadJob -ScriptBlock {
138+ & tools\reportgenerator "-reports:coverageNetCoreXml\*.coveragexml" "-targetdir:coveragereportNetCore" "-reporttypes:Cobertura;" "-assemblyfilters:+microsoft.data.sqlclient.dll" "-sourcedirs:$(Build.SourcesDirectory)\src\Microsoft.Data.SqlClient\netcore\src;$(Build.SourcesDirectory)\src\Microsoft.Data.SqlClient\src" "-classfilters:+Microsoft.Data.*"
139+ }
140+
141+ Write-Host "Running ReportGenerator..."
142+ Wait-Job -Job $jobs
143+
144+ foreach ($job in $jobs) {
145+ Receive-Job -Job $job -Wait -AutoRemoveJob
146+ }
147+ displayName: 'Run ReportGenerator'
148+
149+ - task : PublishCodeCoverageResults@2
150+ displayName : ' Publish code coverage from netcore'
151+ inputs :
152+ summaryFileLocation : ' *\Cobertura.xml'
153+
154+ - pwsh : |
155+ #download Codecov CLI
156+ $ProgressPreference = 'SilentlyContinue'
157+ Invoke-WebRequest -Uri https://cli.codecov.io/latest/windows/codecov.exe -Outfile codecov.exe
158+
159+ ./codecov --verbose upload-process --fail-on-error -t $(CODECOV_TOKEN) -f "coveragereportNetFx\Cobertura.xml" -F netfx
160+ ./codecov --verbose upload-process --fail-on-error -t $(CODECOV_TOKEN) -f "coveragereportNetCore\Cobertura.xml" -F netcore
161+ ./codecov --verbose upload-process --fail-on-error -t $(CODECOV_TOKEN) -f "coveragereportAddOns\Cobertura.xml" -F addons
162+ displayName: 'Upload to CodeCov'
163+ condition: and(succeeded(), eq(variables['uploadTestResult'], 'true'))
0 commit comments