Skip to content

Commit 784046f

Browse files
eng | Initial YAML CI pipeline (#2575)
1 parent ce7393b commit 784046f

21 files changed

+2147
-28
lines changed

build.proj

+4-4
Original file line numberDiff line numberDiff line change
@@ -180,16 +180,16 @@
180180
<Target Name="RunTests" DependsOnTargets="RunFunctionalTests;RunManualTests"/>
181181
<Target Name="RunFunctionalTests">
182182
<!-- Windows -->
183-
<Exec ConsoleToMsBuild="true" Command="$(DotnetPath)dotnet test &quot;@(FunctionalTestsProj)&quot; -p:Configuration=$(Configuration) -p:Target$(TFGroup)Version=$(TF) --no-build -v n --collect &quot;Code coverage&quot; -p:TestSet=$(TestSet) --results-directory $(ResultsDirectory) -p:TestTargetOS=Windows$(TargetGroup) --filter &quot;category!=non$(TargetGroup)tests&amp;category!=failing&amp;category!=nonwindowstests&quot; &quot;--logger:trx;LogFilePrefix=Functional-Windows$(TargetGroup)-$(TestSet)&quot;" Condition="'$(IsEnabledWindows)' == 'true'"/>
183+
<Exec ConsoleToMsBuild="true" Command="$(DotnetPath)dotnet test &quot;@(FunctionalTestsProj)&quot; -p:Configuration=$(Configuration) -p:Target$(TFGroup)Version=$(TF) -p:ReferenceType=$(ReferenceType) --no-build -v n --collect &quot;Code coverage&quot; -p:TestSet=$(TestSet) --results-directory $(ResultsDirectory) -p:TestTargetOS=Windows$(TargetGroup) --filter &quot;category!=non$(TargetGroup)tests&amp;category!=failing&amp;category!=nonwindowstests&quot; &quot;--logger:trx;LogFilePrefix=Functional-Windows$(TargetGroup)-$(TestSet)&quot;" Condition="'$(IsEnabledWindows)' == 'true'"/>
184184
<!-- Unix -->
185-
<Exec ConsoleToMsBuild="true" Command="$(DotnetPath)dotnet test &quot;@(FunctionalTestsProj)&quot; -p:Configuration=$(Configuration) -p:TargetNetCoreVersion=$(TF) --no-build -v n -p:TestSet=$(TestSet) --results-directory $(ResultsDirectory) -p:TestTargetOS=Unixnetcoreapp --collect &quot;Code coverage&quot; --filter &quot;category!=nonnetcoreapptests&amp;category!=failing&amp;category!=nonlinuxtests&amp;category!=nonuaptests&quot; &quot;--logger:trx;LogFilePrefix=Functional-Unixnetcoreapp-$(TestSet)&quot;" Condition="'$(IsEnabledWindows)' != 'true'"/>
185+
<Exec ConsoleToMsBuild="true" Command="$(DotnetPath)dotnet test &quot;@(FunctionalTestsProj)&quot; -p:Configuration=$(Configuration) -p:TargetNetCoreVersion=$(TF) -p:ReferenceType=$(ReferenceType) --no-build -v n -p:TestSet=$(TestSet) --results-directory $(ResultsDirectory) -p:TestTargetOS=Unixnetcoreapp --collect &quot;Code coverage&quot; --filter &quot;category!=nonnetcoreapptests&amp;category!=failing&amp;category!=nonlinuxtests&amp;category!=nonuaptests&quot; &quot;--logger:trx;LogFilePrefix=Functional-Unixnetcoreapp-$(TestSet)&quot;" Condition="'$(IsEnabledWindows)' != 'true'"/>
186186
</Target>
187187

188188
<Target Name="RunManualTests">
189189
<!-- Windows -->
190-
<Exec ConsoleToMsBuild="true" Command="$(DotnetPath)dotnet test &quot;@(ManualTestsProj)&quot; -p:Configuration=$(Configuration) -p:Target$(TFGroup)Version=$(TF) --no-build -l &quot;console;verbosity=normal&quot; --collect &quot;Code coverage&quot; -p:TestSet=$(TestSet) --results-directory $(ResultsDirectory) -p:TestTargetOS=Windows$(TargetGroup) --filter &quot;category!=non$(TargetGroup)tests&amp;category!=failing&amp;category!=nonwindowstests&quot; &quot;--logger:trx;LogFilePrefix=Manual-Windows$(TargetGroup)-$(TestSet)&quot;" Condition="'$(IsEnabledWindows)' == 'true'"/>
190+
<Exec ConsoleToMsBuild="true" Command="$(DotnetPath)dotnet test &quot;@(ManualTestsProj)&quot; -p:Configuration=$(Configuration) -p:Target$(TFGroup)Version=$(TF) -p:ReferenceType=$(ReferenceType) --no-build -l &quot;console;verbosity=normal&quot; --collect &quot;Code coverage&quot; -p:TestSet=$(TestSet) --results-directory $(ResultsDirectory) -p:TestTargetOS=Windows$(TargetGroup) --filter &quot;category!=non$(TargetGroup)tests&amp;category!=failing&amp;category!=nonwindowstests&quot; &quot;--logger:trx;LogFilePrefix=Manual-Windows$(TargetGroup)-$(TestSet)&quot;" Condition="'$(IsEnabledWindows)' == 'true'"/>
191191
<!-- Unix -->
192-
<Exec ConsoleToMsBuild="true" Command="$(DotnetPath)dotnet test &quot;@(ManualTestsProj)&quot; -p:Configuration=$(Configuration) -p:TargetNetCoreVersion=$(TF) --no-build -l &quot;console;verbosity=normal&quot; --collect &quot;Code coverage&quot; -p:TestSet=$(TestSet) --results-directory $(ResultsDirectory) -p:TestTargetOS=Unixnetcoreapp --filter &quot;category!=nonnetcoreapptests&amp;category!=failing&amp;category!=nonlinuxtests&amp;category!=nonuaptests&quot; &quot;--logger:trx;LogFilePrefix=Manual-Unixnetcoreapp-$(TestSet)&quot;" Condition="'$(IsEnabledWindows)' != 'true'"/>
192+
<Exec ConsoleToMsBuild="true" Command="$(DotnetPath)dotnet test &quot;@(ManualTestsProj)&quot; -p:Configuration=$(Configuration) -p:TargetNetCoreVersion=$(TF) -p:ReferenceType=$(ReferenceType) --no-build -l &quot;console;verbosity=normal&quot; --collect &quot;Code coverage&quot; -p:TestSet=$(TestSet) --results-directory $(ResultsDirectory) -p:TestTargetOS=Unixnetcoreapp --filter &quot;category!=nonnetcoreapptests&amp;category!=failing&amp;category!=nonlinuxtests&amp;category!=nonuaptests&quot; &quot;--logger:trx;LogFilePrefix=Manual-Unixnetcoreapp-$(TestSet)&quot;" Condition="'$(IsEnabledWindows)' != 'true'"/>
193193
</Target>
194194

195195
<Target Name="Clean">
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#################################################################################
2+
# Licensed to the .NET Foundation under one or more agreements. #
3+
# The .NET Foundation licenses this file to you under the MIT license. #
4+
# See the LICENSE file in the project root for more information. #
5+
#################################################################################
6+
parameters:
7+
- name: poolName
8+
type: string
9+
default: $(ci_var_defaultPoolName)
10+
11+
- name: imageOverride
12+
type: string
13+
default: ADO-MMS22-SQL19
14+
15+
- name: artifactName
16+
type: string
17+
default: Artifacts
18+
19+
- name: platform
20+
type: string
21+
default: $(Platform)
22+
23+
- name: configuration
24+
type: string
25+
default: $(Configuration)
26+
27+
- name: prebuildSteps
28+
type: stepList
29+
default: []
30+
31+
jobs:
32+
- job: build_nugets
33+
34+
pool:
35+
name: ${{parameters.poolName }}
36+
demands:
37+
- imageOverride -equals ${{ parameters.imageOverride }}
38+
- msbuild
39+
40+
variables:
41+
- template: ../../../libraries/ci-build-variables.yml@self
42+
43+
steps:
44+
- ${{ if ne(parameters.prebuildSteps, '') }}:
45+
- ${{ parameters.prebuildSteps }} # extra steps to run before the build like downloading sni and the required configuration
46+
47+
- template: ../steps/ci-project-build-step.yml@self
48+
parameters:
49+
platform: ${{ parameters.platform }}
50+
configuration: ${{ parameters.configuration }}
51+
operatingSystem: Windows
52+
build: all
53+
54+
- template: ../steps/generate-nuget-package-step.yml@self
55+
parameters:
56+
NugetPackageVersion: $(NugetPackageVersion)
57+
configuration: $(Configuration)
58+
nuspecPath: 'tools/specs/Microsoft.Data.SqlClient.nuspec'
59+
OutputDirectory: $(packagePath)
60+
generateSymbolsPackage: false
61+
displayName: 'Generate NuGet package M.D.SqlClient'
62+
63+
- template: ../steps/generate-nuget-package-step.yml@self
64+
parameters:
65+
NugetPackageVersion: $(NugetPackageVersion)
66+
configuration: $(Configuration)
67+
nuspecPath: 'tools/specs/add-ons/Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider.nuspec'
68+
OutputDirectory: $(packagePath)
69+
generateSymbolsPackage: false
70+
installNuget: false
71+
displayName: 'Generate NuGet package AKV Provider'
72+
73+
- task: PublishBuildArtifacts@1
74+
displayName: 'Publish Artifact: Artifacts'
75+
inputs:
76+
PathtoPublish: $(packagePath)
77+
ArtifactName: ${{ parameters.artifactName }}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
#################################################################################
2+
# Licensed to the .NET Foundation under one or more agreements. #
3+
# The .NET Foundation licenses this file to you under the MIT license. #
4+
# See the LICENSE file in the project root for more information. #
5+
#################################################################################
6+
parameters:
7+
- name: debug
8+
type: boolean
9+
default: false
10+
11+
- name: upload
12+
type: string
13+
default: $(ci_var_uploadTestResult)
14+
15+
- name: poolName
16+
type: string
17+
default: $(defaultHostedPoolName)
18+
19+
- name: image
20+
type: string
21+
default: 'windows-2022'
22+
23+
- name: downloadArtifactsSteps
24+
type: stepList
25+
default: []
26+
27+
jobs:
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+
- task: UseDotNet@2
48+
displayName: 'Use .NET SDK 7.0.x'
49+
inputs:
50+
version: 7.0.x
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+
- powershell: |
64+
dotnet tool install --global dotnet-coverage
65+
66+
$files = Get-ChildItem $(Build.SourcesDirectory)\coverageNetFx\ -Recurse -File -Filter *.coverage
67+
# echo $files
68+
mkdir coverageNetFxXml
69+
$counter=0
70+
foreach ($file in $files) {
71+
& dotnet-coverage merge $file.FullName --output coverageNetFxXml\$((++$counter)).coveragexml --output-format xml
72+
}
73+
74+
$files = Get-ChildItem $(Build.SourcesDirectory)\coverageNetCore\ -Recurse -File -Filter *.coverage
75+
# echo $files
76+
mkdir coverageNetCoreXml
77+
$counter=0
78+
foreach ($file in $files) {
79+
& dotnet-coverage merge $file.FullName --output coverageNetCoreXml\$((++$counter)).coveragexml --output-format xml
80+
}
81+
82+
# dir coverageNetFxXml\
83+
# dir coverageNetCoreXml\
84+
85+
Write-Host "Clean up disk ... [removing coverageNetFx & coverageNetCore]"
86+
87+
Remove-Item $(Build.SourcesDirectory)\coverageNetFx -Recurse -Force
88+
Remove-Item $(Build.SourcesDirectory)\coverageNetCore -Recurse -Force
89+
90+
displayName: 'Convert coverage files to xml'
91+
92+
- ${{ if eq(parameters.debug, true)}}:
93+
- powershell: |
94+
dir coverageNetFxXml\
95+
dir coverageNetCoreXml\
96+
displayName: 'List converted files [debug]'
97+
98+
- script: |
99+
dotnet tool install dotnet-reportgenerator-globaltool --tool-path tools
100+
101+
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.*"
102+
103+
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.*"
104+
105+
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.*"
106+
displayName: 'Run ReportGenerator'
107+
108+
- task: PublishCodeCoverageResults@2
109+
displayName: 'Publish code coverage from netcore'
110+
inputs:
111+
summaryFileLocation: '*\Cobertura.xml'
112+
113+
- powershell: |
114+
#download Codecov CLI
115+
$ProgressPreference = 'SilentlyContinue'
116+
Invoke-WebRequest -Uri https://cli.codecov.io/latest/windows/codecov.exe -Outfile codecov.exe
117+
118+
./codecov --verbose upload-process --fail-on-error -t $(CODECOV_TOKEN) -f "coveragereportNetFx\Cobertura.xml" -F netfx
119+
./codecov --verbose upload-process --fail-on-error -t $(CODECOV_TOKEN) -f "coveragereportNetCore\Cobertura.xml" -F netcore
120+
./codecov --verbose upload-process --fail-on-error -t $(CODECOV_TOKEN) -f "coveragereportAddOns\Cobertura.xml" -F addons
121+
displayName: 'Upload to CodeCov'
122+
condition: and(succeeded(), eq(variables['uploadTestResult'], 'true'))

0 commit comments

Comments
 (0)