Skip to content

Commit ea7ad53

Browse files
Merged PR 4474: eng | Add AKV provider signed package
1 parent ae988c3 commit ea7ad53

16 files changed

+424
-120
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
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+
jobs:
7+
- job: build_signed_akv_package
8+
pool:
9+
type: windows # read more about custom job pool types at https://aka.ms/obpipelines/yaml/jobs
10+
11+
variables:
12+
- template: ../../../libraries/variables.yml@self
13+
14+
steps:
15+
- script: SET
16+
displayName: 'Print Environment Variables'
17+
18+
- template: ../steps/build-all-configurations-signed-dlls-step.yml@self
19+
parameters:
20+
product: AKV
21+
nugetPackageRefVersion: $(MDS_PackageRef_Version)
22+
AssemblyFileVersion: $(AKVAssemblyFileVersion)
23+
24+
- template: ../steps/code-analyze-step.yml@self
25+
parameters:
26+
analyzeType: all
27+
product: AKV
28+
nugetPackageRefVersion: $(MDS_PackageRef_Version)
29+
30+
- template: ../steps/esrp-code-signing-step.yml@self
31+
parameters:
32+
artifactType: dll
33+
34+
- template: ../steps/generate-nuget-package-step.yml@self
35+
parameters:
36+
OutputDirectory: $(artifactDirectory)
37+
nuspecPath: ${{variables.akvNuspecPath }}
38+
NugetPackageVersion: ${{variables.AKVNuGetPackageVersion }}
39+
referenceType: package
40+
41+
- template: ../steps/esrp-code-signing-step.yml@self
42+
parameters:
43+
artifactType: pkg
44+
45+
- template: ../steps/copy-dlls-for-test-step.yml@self
46+
parameters:
47+
product: AKV
48+
referenceType: package
49+
50+
# Publish symbols to private server
51+
- template: ../steps/publish-symbols-step.yml@self
52+
parameters:
53+
SymAccount: $(PrivateSymAccount)
54+
referenceType: package
55+
symbolsVersion: ${{variables.AKVNuGetPackageVersion }}
56+
product: AKV
57+
58+
# Publish symbols to public server
59+
- template: ../steps/publish-symbols-step.yml@self
60+
parameters:
61+
SymAccount: $(PublicSymAccount)
62+
referenceType: package
63+
symbolsVersion: ${{variables.AKVNuGetPackageVersion }}
64+
product: AKV

eng/pipelines/common/templates/jobs/build-signed-package-job.yml

Lines changed: 11 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -17,59 +17,34 @@ jobs:
1717
type: windows # read more about custom job pool types at https://aka.ms/obpipelines/yaml/jobs
1818

1919
variables:
20-
- template: ../../../libraries/variables.yml@self
20+
- template: ../../../libraries/variables.yml@self
2121

2222
steps:
2323
- script: SET
2424
displayName: 'Print Environment Variables'
25+
2526
- template: ../steps/build-all-configurations-signed-dlls-step.yml@self
27+
2628
- template: ../steps/code-analyze-step.yml@self
2729
parameters:
2830
analyzeType: all
31+
2932
- template: ../steps/esrp-code-signing-step.yml@self
3033
parameters:
3134
artifactType: dll
35+
3236
- template: ../steps/generate-nuget-package-step.yml@self
3337
parameters:
3438
OutputDirectory: $(artifactDirectory)
39+
3540
- template: ../steps/esrp-code-signing-step.yml@self
3641
parameters:
3742
artifactType: pkg
38-
- powershell: |
39-
$software = '${{parameters.softwareFolder}}'
40-
md $software
41-
md $software\win
42-
md $software\win\net46
43-
md $software\win\net6.0
44-
md $software\win\net8.0
45-
md $software\win\netstandard2.0
46-
md $software\win\netstandard2.1
47-
48-
Copy-Item "artifacts\Project\bin\Windows_NT\Release.AnyCPU\Microsoft.Data.SqlClient\netfx\net462\Microsoft.Data.SqlClient.dll" "$software\win\net46" -recurse
49-
Copy-Item "artifacts\Project\bin\Windows_NT\Release.AnyCPU\Microsoft.Data.SqlClient\netcore\net6.0\Microsoft.Data.SqlClient.dll" "$software\win\net6.0" -recurse
50-
Copy-Item "artifacts\Project\bin\Windows_NT\Release.AnyCPU\Microsoft.Data.SqlClient\netcore\net8.0\Microsoft.Data.SqlClient.dll" "$software\win\net8.0" -recurse
51-
Copy-Item "artifacts\Project\bin\Windows_NT\Release.AnyCPU\Microsoft.Data.SqlClient\netcore\netstandard2.0\Microsoft.Data.SqlClient.dll" "$software\win\netstandard2.0" -recurse
52-
Copy-Item "artifacts\Project\bin\Windows_NT\Release.AnyCPU\Microsoft.Data.SqlClient\netcore\netstandard2.1\Microsoft.Data.SqlClient.dll" "$software\win\netstandard2.1" -recurse
53-
54-
$symbols = '${{parameters.symbolsFolder}}'
55-
md $symbols
56-
md $symbols\win
57-
md $symbols\win\net46
58-
md $symbols\win\net6.0
59-
md $symbols\win\net8.0
60-
md $symbols\win\netstandard2.0
61-
md $symbols\win\netstandard2.1
62-
63-
Copy-Item "artifacts\Project\bin\Windows_NT\Release.AnyCPU\Microsoft.Data.SqlClient\netfx\net462\Microsoft.Data.SqlClient.pdb" "$symbols\win\net46" -recurse
64-
Copy-Item "artifacts\Project\bin\Windows_NT\Release.AnyCPU\Microsoft.Data.SqlClient\netcore\net6.0\Microsoft.Data.SqlClient.pdb" "$symbols\win\net6.0" -recurse
65-
Copy-Item "artifacts\Project\bin\Windows_NT\Release.AnyCPU\Microsoft.Data.SqlClient\netcore\net8.0\Microsoft.Data.SqlClient.pdb" "$symbols\win\net8.0" -recurse
66-
Copy-Item "artifacts\Project\bin\Windows_NT\Release.AnyCPU\Microsoft.Data.SqlClient\netcore\netstandard2.0\Microsoft.Data.SqlClient.pdb" "$symbols\win\netstandard2.0" -recurse
67-
Copy-Item "artifacts\Project\bin\Windows_NT\Release.AnyCPU\Microsoft.Data.SqlClient\netcore\netstandard2.1\Microsoft.Data.SqlClient.pdb" "$symbols\win\netstandard2.1" -recurse
68-
69-
Write-Host "Artifacts fetched for testing"
70-
dir
71-
Get-Location
72-
displayName: 'Prepare Arifacts for Testing'
43+
44+
- template: ../steps/copy-dlls-for-test-step.yml@self
45+
parameters:
46+
product: MDS
47+
7348
# Publish symbols to private server
7449
- template: ../steps/publish-symbols-step.yml@self
7550
parameters:

eng/pipelines/common/templates/jobs/run-tests-package-reference-job.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ jobs:
2828
vmImage: 'ADO-MMS22-SQL19'
2929

3030
variables: # More settings at https://aka.ms/obpipelines/yaml/jobs
31-
- template: ../../../libraries/build-variables.yml@self
32-
- template: ../../../libraries/validation-variables.yml@self
31+
- template: ../../../libraries/mds-validation-variables.yml@self
3332

3433
steps:
3534
- template: ../steps/pre-build-step.yml

eng/pipelines/common/templates/jobs/verify-signed-package-job.yml renamed to eng/pipelines/common/templates/jobs/validate-signed-package-job.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ parameters:
3434
default: $(AssemblyFileVersion)
3535

3636
jobs:
37-
- job: verify_signed_package
37+
- job: validate_signed_package
3838
${{ if ne(parameters.dependsOn, '')}}:
3939
dependsOn: '${{parameters.dependsOn }}'
4040
pool:
@@ -44,8 +44,8 @@ jobs:
4444
vmImage: 'ADO-MMS22-SQL19'
4545

4646
variables: # More settings at https://aka.ms/obpipelines/yaml/jobs
47-
- template: ../../../libraries/build-variables.yml@self
48-
- template: ../../../libraries/validation-variables.yml@self
47+
- template: ../../../libraries/mds-validation-variables.yml@self
48+
4949
- name: pathToDownloadedNuget # path to the downloaded nuget files
5050
value: $(Pipeline.Workspace)\${{parameters.packageFolderName }}
5151

eng/pipelines/common/templates/steps/build-all-configurations-signed-dlls-step.yml

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,50 @@ parameters:
1212
type: string
1313
default: '$(Configuration)'
1414

15+
- name: nugetPackageRefVersion
16+
type: string
17+
default: ''
18+
19+
- name: product
20+
default: MDS
21+
values:
22+
- MDS
23+
- AKV
24+
- MSS
25+
1526
steps:
16-
- task: DownloadSecureFile@1
17-
displayName: 'Download Key Pair'
18-
inputs:
19-
secureFile: netfxKeypair.snk
20-
retryCount: 5
27+
- task: DownloadSecureFile@1
28+
displayName: 'Download Key Pair'
29+
inputs:
30+
secureFile: netfxKeypair.snk
31+
retryCount: 5
32+
33+
- ${{ if eq(parameters.product, 'MDS') }}:
2134
- task: MSBuild@1
2235
displayName: 'BuildAllConfigurations using build.proj'
2336
inputs:
2437
solution: '**/build.proj'
2538
configuration: '${{parameters.Configuration }}'
26-
msbuildArguments: '/p:AssemblyFileVersion=${{parameters.AssemblyFileVersion }} /t:BuildAllConfigurations /p:GenerateNuget=false /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(Agent.TempDirectory)\netfxKeypair.snk'
39+
msbuildArguments: '-p:AssemblyFileVersion=${{parameters.AssemblyFileVersion }} -t:BuildAllConfigurations -p:GenerateNuget=false -p:SignAssembly=true -p:AssemblyOriginatorKeyFile=$(Agent.TempDirectory)\netfxKeypair.snk'
40+
41+
- ${{ if eq(parameters.product, 'AKV') }}:
42+
- task: MSBuild@1
43+
displayName: 'BuildAKVNetStAllOS using build.proj'
44+
inputs:
45+
solution: '**/build.proj'
46+
configuration: '$(Configuration)'
47+
msbuildArguments: '-p:AssemblyFileVersion=${{parameters.AssemblyFileVersion }} -t:BuildAKVNetStAllOS -p:NugetPackageVersion=${{parameters.nugetPackageRefVersion }} -p:ReferenceType=Package -p:SignAssembly=true -p:AssemblyOriginatorKeyFile=$(Agent.TempDirectory)\netfxKeypair.snk'
48+
49+
- task: MSBuild@1
50+
displayName: 'BuildAKVNetFx using build.proj'
51+
inputs:
52+
solution: '**/build.proj'
53+
configuration: '$(Configuration)'
54+
msbuildArguments: '-p:AssemblyFileVersion=${{parameters.AssemblyFileVersion }} -t:BuildAKVNetFx -p:NugetPackageVersion=${{parameters.nugetPackageRefVersion }} -p:ReferenceType=Package -p:SignAssembly=true -p:AssemblyOriginatorKeyFile=$(Agent.TempDirectory)\netfxKeypair.snk'
55+
56+
- task: MSBuild@1
57+
displayName: 'BuildAKVNetCoreAllOS using build.proj'
58+
inputs:
59+
solution: '**/build.proj'
60+
configuration: '$(Configuration)'
61+
msbuildArguments: '-p:AssemblyFileVersion=${{parameters.AssemblyFileVersion }} -t:BuildAKVNetCoreAllOS -p:NugetPackageVersion=${{parameters.nugetPackageRefVersion }} -p:ReferenceType=Package -p:SignAssembly=true -p:AssemblyOriginatorKeyFile=$(Agent.TempDirectory)\netfxKeypair.snk'

eng/pipelines/common/templates/steps/code-analyze-step.yml

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,35 @@ parameters:
1414
type: string
1515
default: $(REPOROOT)
1616

17+
- name: nugetPackageRefVersion
18+
type: string
19+
default: ''
20+
21+
- name: product
22+
default: MDS
23+
values:
24+
- MDS
25+
- AKV
26+
- MSS
27+
1728
steps:
1829
- ${{ if or(eq(parameters.analyzeType, 'roslyn'), eq(parameters.analyzeType, 'all')) }}:
19-
- task: securedevelopmentteam.vss-secure-development-tools.build-task-roslynanalyzers.RoslynAnalyzers@3
20-
displayName: 'Guardian Dotnet Analyzers '
21-
inputs:
22-
msBuildVersion: 17.0
23-
msBuildArchitecture: x64
24-
setupCommandlinePicker: vs2022
25-
msBuildCommandline: 'msbuild ${{parameters.sourceRoot}}\build.proj -p:configuration=Release -p:GenerateNuget=false -p:BuildTools=false'
30+
- ${{ if eq(parameters.product, 'MDS') }}:
31+
- task: securedevelopmentteam.vss-secure-development-tools.build-task-roslynanalyzers.RoslynAnalyzers@3
32+
displayName: 'Guardian Dotnet Analyzers '
33+
inputs:
34+
msBuildVersion: 17.0
35+
msBuildArchitecture: x64
36+
setupCommandlinePicker: vs2022
37+
msBuildCommandline: 'msbuild ${{parameters.sourceRoot}}\build.proj -p:configuration=Release -p:GenerateNuget=false -p:BuildTools=false'
38+
- ${{ if eq(parameters.product, 'AKV') }}:
39+
- task: securedevelopmentteam.vss-secure-development-tools.build-task-roslynanalyzers.RoslynAnalyzers@3
40+
displayName: 'Guardian Dotnet Analyzers '
41+
inputs:
42+
msBuildVersion: 17.0
43+
msBuildArchitecture: x64
44+
setupCommandlinePicker: vs2022
45+
msBuildCommandline: 'msbuild ${{parameters.sourceRoot}}\build.proj -p:configuration=Release -p:GenerateNuget=false -p:BuildTools=false -p:NugetPackageVersion=${{parameters.nugetPackageRefVersion }} -p:ReferenceType=Package -t:BuildAKVNetCoreAllOS'
2646

2747
- ${{ if or(eq(parameters.analyzeType, 'inspect'), eq(parameters.analyzeType, 'all')) }}:
2848
- task: securedevelopmentteam.vss-secure-development-tools.build-task-codeinspector.CodeInspector@2
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
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: Configuration
8+
type: string
9+
default: '$(Configuration)'
10+
11+
- name: symbolsFolder
12+
type: string
13+
default: symbols
14+
15+
- name: softwareFolder
16+
type: string
17+
default: software
18+
19+
- name: referenceType
20+
default: project
21+
values:
22+
- project
23+
- package
24+
25+
- name: listOfTF
26+
type: object
27+
default:
28+
- net462
29+
- net6.0
30+
- net8.0
31+
- netstandard2.0
32+
- netstandard2.1
33+
34+
- name: product
35+
default: MDS
36+
values:
37+
- MDS
38+
- AKV
39+
- MSS
40+
41+
steps:
42+
- powershell: |
43+
$software = '${{parameters.softwareFolder}}'
44+
$symbols = '${{parameters.symbolsFolder}}'
45+
46+
md $software
47+
md $software\win
48+
49+
md $symbols
50+
md $symbols\win
51+
displayName: 'Make base directories'
52+
53+
- ${{ each targetFramework in parameters.listOfTF }}:
54+
- ${{ if eq(parameters.product, 'MDS') }}:
55+
- powershell: |
56+
$software = '${{parameters.softwareFolder}}'
57+
$tf = '${{ targetFramework }}'
58+
md $software\win\$tf
59+
60+
if ($tf.StartsWith('net4'))
61+
{
62+
Copy-Item "artifacts\${{parameters.referenceType }}\bin\Windows_NT\${{parameters.Configuration }}.AnyCPU\Microsoft.Data.SqlClient\netfx\$tf\Microsoft.Data.SqlClient.dll" "$software\win\$tf" -recurse
63+
}
64+
else
65+
{
66+
Copy-Item "artifacts\${{parameters.referenceType }}\bin\Windows_NT\${{parameters.Configuration }}.AnyCPU\Microsoft.Data.SqlClient\netcore\$tf\Microsoft.Data.SqlClient.dll" "$software\win\$tf" -recurse
67+
}
68+
69+
$symbols = '${{parameters.symbolsFolder}}'
70+
md $symbols\win\$tf
71+
72+
if ($tf.StartsWith('net4'))
73+
{
74+
Copy-Item "artifacts\Project\bin\Windows_NT\Release.AnyCPU\Microsoft.Data.SqlClient\netfx\$tf\Microsoft.Data.SqlClient.pdb" "$symbols\win\$tf" -recurse
75+
}
76+
else
77+
{
78+
Copy-Item "artifacts\Project\bin\Windows_NT\Release.AnyCPU\Microsoft.Data.SqlClient\netcore\$tf\Microsoft.Data.SqlClient.pdb" "$symbols\win\$tf" -recurse
79+
}
80+
81+
Write-Host "Artifacts fetched for testing"
82+
Get-Location
83+
displayName: 'Prepare ${{ targetFramework }} Arifacts for Testing'
84+
85+
- ${{ if eq(parameters.product, 'AKV') }}:
86+
- powershell: |
87+
$software = '${{parameters.softwareFolder}}'
88+
$tf = '${{ targetFramework }}'
89+
md $software\win\$tf
90+
91+
Copy-Item "artifacts\${{parameters.referenceType }}\bin\Windows_NT\${{parameters.Configuration }}.AnyCPU\AzureKeyVaultProvider\$tf\Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider.dll" "$software\win\$tf" -recurse
92+
93+
$symbols = '${{parameters.symbolsFolder}}'
94+
md $symbols\win\$tf
95+
96+
Copy-Item "artifacts\${{parameters.referenceType }}\bin\Windows_NT\${{parameters.Configuration }}.AnyCPU\AzureKeyVaultProvider\$tf\Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider.pdb" "$symbols\win\$tf" -recurse
97+
98+
Write-Host "Artifacts fetched for testing"
99+
Get-Location
100+
displayName: 'Prepare ${{ targetFramework }} Arifacts for Testing'
101+
102+
- powershell: |
103+
$software = '${{parameters.softwareFolder}}'
104+
$symbols = '${{parameters.symbolsFolder}}'
105+
106+
Get-ChildItem -recurse "$software\*.dll"
107+
Get-ChildItem -recurse "$symbols\*.pdb"
108+
displayName: 'List the prepared files'

eng/pipelines/common/templates/steps/generate-nuget-package-step.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ parameters:
2323
- name: Configuration
2424
type: string
2525
default: '$(Configuration)'
26+
27+
- name: referenceType
28+
default: project
29+
values:
30+
- project
31+
- package
2632

2733
steps:
2834
- task: NuGetToolInstaller@1
@@ -37,4 +43,4 @@ steps:
3743
displayName: 'NuGet pack with snupkg'
3844
inputs:
3945
command: custom
40-
arguments: 'pack -Symbols -SymbolPackageFormat snupkg ${{parameters.nuspecPath}} -Version ${{parameters.NugetPackageVersion}} -OutputDirectory ${{parameters.OutputDirectory}} -properties "COMMITID=${{parameters.CommitHead}};Configuration=${{parameters.Configuration}}"'
46+
arguments: 'pack -Symbols -SymbolPackageFormat snupkg ${{parameters.nuspecPath}} -Version ${{parameters.NugetPackageVersion}} -OutputDirectory ${{parameters.OutputDirectory}} -properties "COMMITID=${{parameters.CommitHead}};Configuration=${{parameters.Configuration}};ReferenceType=${{parameters.referenceType}}"'

0 commit comments

Comments
 (0)