Skip to content

Commit 6a52ede

Browse files
committed
User Story 37654: Create Extensions base package
- Added empty Extensions package with some sample class and docs to demonstrate packaging. - Created first cut of CI stage to build, test, pack, and publish the Extensions NuGet package.
1 parent 2bb2c43 commit 6a52ede

27 files changed

+617
-91
lines changed

.editorconfig

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ indent_size = 4
1414
[*.{json,jsonc}]
1515
indent_size = 2
1616

17+
[*.{yml,yaml}]
18+
indent_size = 2
19+
1720
# C# files
1821
[*.cs]
1922
# New line preferences
@@ -160,7 +163,7 @@ indent_size = 2
160163
indent_size = 2
161164

162165
# Xml files
163-
[*.{xml,stylecop,resx,ruleset}]
166+
[*.{xml,stylecop,resx,ruleset,slnx}]
164167
indent_size = 2
165168

166169
# Xml config files

NuGet.config

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22
<configuration>
33
<packageSources>
44
<clear />
5-
<add key="sqlclient" value="https://sqlclientdrivers.pkgs.visualstudio.com/public/_packaging/sqlclient/nuget/v3/index.json" />
5+
<!-- We use a curated, vetted ADO feed for our dependencies. -->
6+
<add key="curated" value="https://sqlclientdrivers.pkgs.visualstudio.com/public/_packaging/sqlclient/nuget/v3/index.json" />
67
</packageSources>
78
<auditSources>
89
<clear />
10+
11+
<!-- There is no curated, vetted ADO feed for auditing, so we use the official source. -->
912
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
1013
</auditSources>
1114
</configuration>

build.proj

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151

5252
<!-- Populate all managed projects -->
5353
<ItemGroup>
54+
<ExtensionsPackage Include="**/Extensions/Microsoft.Data.SqlClient.Extensions.slnx" />
5455
<SqlServerLib Include="**/Microsoft.SqlServer.Server.csproj" />
5556
<NetFxDriver Include="**/netfx/**/Microsoft.Data.SqlClient*.csproj" Condition="'$(IsEnabledWindows)' == 'true'" />
5657
<NetCoreDriver Include="**/netcore/**/Microsoft.Data.SqlClient*.csproj" />
@@ -85,13 +86,29 @@
8586

8687
<!-- Top Level Build targets -->
8788
<Target Name="Restore" DependsOnTargets="RestoreSqlServerLib;RestoreNetCore;RestoreNetFx" />
88-
<Target Name="BuildAll" DependsOnTargets="BuildSqlServerLib;BuildNetFx;BuildNetCore;BuildNetStandard" />
89-
<Target Name="BuildAllConfigurations" DependsOnTargets="Restore;BuildTools;BuildSqlServerLib;BuildNetFx;BuildNetCoreAllOS;BuildNetStandard;GenerateNugetPackage" />
89+
<Target Name="BuildAll" DependsOnTargets="BuildExtensionsPackage;BuildSqlServerLib;BuildNetFx;BuildNetCore;BuildNetStandard" />
90+
<Target Name="BuildAllConfigurations" DependsOnTargets="Restore;BuildTools;BuildExtensionsPackage;BuildSqlServerLib;BuildNetFx;BuildNetCoreAllOS;BuildNetStandard;GenerateNugetPackage" />
9091
<Target Name="BuildSqlServerPackage" DependsOnTargets="BuildSqlServerLibAnyOS;GenerateSqlServerPackage"/>
9192
<Target Name="BuildTestsNetCore" DependsOnTargets="RestoreTestsNetCore;BuildAKVNetCore;BuildUnitTestsNetCore;BuildFunctionalTestsNetCore;BuildManualTestsNetCore"/>
9293
<Target Name="BuildTestsNetFx" DependsOnTargets="RestoreTestsNetFx;BuildAKVNetFx;BuildUnitTestsNetFx;BuildFunctionalTestsNetFx;BuildManualTestsNetFx" Condition="$(IsEnabledWindows) == 'true'"/>
9394
<Target Name="BuildTests" DependsOnTargets="BuildTestsNetCore;BuildTestsNetFx"/>
9495

96+
<Target Name="BuildExtensionsPackage">
97+
<PropertyGroup>
98+
<!--
99+
Omit the ExtensionsPackageVersion property entirely if it is empty.
100+
Otherwise, the command-line property will override the default value,
101+
even if empty.
102+
-->
103+
<BuildProperties Condition="'$(ExtensionsPackageVersion)' != ''">ExtensionsPackageVersion=$(ExtensionsPackageVersion)</BuildProperties>
104+
</PropertyGroup>
105+
106+
<MSBuild
107+
Projects="@(ExtensionsPackage)"
108+
Targets="Restore;Build;Pack"
109+
Properties="$(BuildProperties)" />
110+
</Target>
111+
95112
<Target Name="RestoreSqlServerLib">
96113
<MSBuild Projects="@(SqlServerLib)" Targets="restore" />
97114
</Target>
@@ -349,11 +366,11 @@
349366

350367
<!-- Clean -->
351368
<Target Name="Clean">
352-
<RemoveDir Directories='$([System.IO.Directory]::GetDirectories(".","artifacts", SearchOption.AllDirectories))' />
353-
<RemoveDir Directories='$([System.IO.Directory]::GetDirectories(".","bin", SearchOption.AllDirectories))' />
354-
<RemoveDir Directories='$([System.IO.Directory]::GetDirectories(".","obj", SearchOption.AllDirectories))' />
355-
<RemoveDir Directories='$([System.IO.Directory]::GetDirectories(".","packages", SearchOption.AllDirectories))' />
356-
<RemoveDir Directories='$([System.IO.Directory]::GetDirectories(".",".nuget", SearchOption.AllDirectories))' />
369+
<RemoveDir Directories='$([System.IO.Directory]::GetDirectories(".", "artifacts", SearchOption.AllDirectories))' />
370+
<RemoveDir Directories='$([System.IO.Directory]::GetDirectories(".", "bin", SearchOption.AllDirectories))' />
371+
<RemoveDir Directories='$([System.IO.Directory]::GetDirectories(".", "obj", SearchOption.AllDirectories))' />
372+
<RemoveDir Directories='$([System.IO.Directory]::GetDirectories(".", "packages", SearchOption.AllDirectories))' />
373+
<RemoveDir Directories='$([System.IO.Directory]::GetDirectories(".", ".nuget", SearchOption.AllDirectories))' />
357374
</Target>
358375

359376
<!-- AKV Targets ========================================================= -->

eng/pipelines/common/templates/jobs/ci-build-nugets-job.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ parameters:
2828
type: stepList
2929
default: []
3030

31+
- name: extensionsPackageVersion
32+
displayName: Extensions Package Version Override
33+
type: string
34+
default: ''
35+
3136
jobs:
3237
- job: build_nugets
3338

@@ -44,12 +49,22 @@ jobs:
4449
- ${{ if ne(parameters.prebuildSteps, '') }}:
4550
- ${{ parameters.prebuildSteps }} # extra steps to run before the build like downloading sni and the required configuration
4651

52+
# Download the Extensions package artifacts and put them in the packages/
53+
# directory in the repo root. This is where the MDS NuGet.config file will
54+
# look for local packages.
55+
- task: DownloadPipelineArtifact@2
56+
displayName: Download Extensions Package Artifacts
57+
inputs:
58+
artifactName: ExtensionsPackageArtifacts
59+
targetPath: $(Build.SourcesDirectory)/packages
60+
4761
- template: ../steps/ci-project-build-step.yml@self
4862
parameters:
4963
platform: ${{ parameters.platform }}
5064
configuration: ${{ parameters.configuration }}
5165
operatingSystem: Windows
5266
build: all
67+
extensionsPackageVersion: ${{parameters.extensionsPackageVersion}}
5368

5469
- template: ../steps/generate-nuget-package-step.yml@self
5570
parameters:

eng/pipelines/common/templates/stages/ci-run-tests-stage.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,12 @@ stages:
3535
- ${{ each image in config.value.images }}:
3636
- stage: ${{ image.key }}
3737
${{ if ne(parameters.dependsOn, '') }}:
38-
dependsOn: ${{ parameters.dependsOn }}
38+
dependsOn:
39+
- build_extensions_package_stage
40+
- ${{ parameters.dependsOn }}
3941
${{ else }}:
40-
dependsOn: []
42+
dependsOn:
43+
- build_extensions_package_stage
4144
jobs:
4245
- ${{ each targetFramework in config.value.TargetFrameworks }}:
4346
- ${{ each platform in config.value.buildPlatforms }}:

eng/pipelines/common/templates/steps/ci-prebuild-step.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ parameters:
1919
- Project
2020
- Package
2121

22+
- name: extensionsPackageVersion
23+
displayName: Extensions Package Version Override
24+
type: string
25+
default: ''
26+
2227
steps:
2328
- template: ensure-dotnet-version.yml
2429
parameters:
@@ -55,3 +60,4 @@ steps:
5560
- template: ci-project-build-step.yml@self
5661
parameters:
5762
build: allNoDocs
63+
extensionsPackageVersion: ${{parameters.extensionsPackageVersion}}

eng/pipelines/common/templates/steps/ci-project-build-step.yml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ parameters:
3434
- all
3535
- allNoDocs
3636

37+
- name: extensionsPackageVersion
38+
displayName: Extensions Package Version Override
39+
type: string
40+
default: ''
41+
3742
steps:
3843
- template: ./ensure-dotnet-version.yml@self
3944
parameters:
@@ -53,7 +58,7 @@ steps:
5358
inputs:
5459
solution: build.proj
5560
msbuildArchitecture: x64
56-
msbuildArguments: '-t:restore'
61+
msbuildArguments: '-t:restore -p:ExtensionsPackageVersion=${{parameters.extensionsPackageVersion}}.${{parameters.buildNumber}}'
5762
retryCountOnTaskFailure: 1
5863

5964
- ${{ if eq(parameters.build, 'allNoDocs') }}:
@@ -65,7 +70,7 @@ steps:
6570
msbuildArchitecture: x64
6671
platform: '${{ parameters.platform }}'
6772
configuration: '${{ parameters.configuration }}'
68-
msbuildArguments: '-t:BuildAllConfigurations -p:GenerateDocumentationFile=false -p:GenerateNuGet=false -p:BuildNumber=${{ parameters.buildNumber }}'
73+
msbuildArguments: '-t:BuildAllConfigurations -p:GenerateDocumentationFile=false -p:GenerateNuGet=false -p:BuildNumber=${{ parameters.buildNumber }} -p:ExtensionsPackageVersion=${{parameters.extensionsPackageVersion}}.${{parameters.buildNumber}}'
6974
clean: true
7075

7176
- ${{ if or(eq(parameters.build, 'MDS'), eq(parameters.build, 'all')) }}:
@@ -89,7 +94,7 @@ steps:
8994
msbuildArchitecture: x64
9095
platform: '${{ parameters.platform }}'
9196
configuration: '${{ parameters.configuration }}'
92-
msbuildArguments: '-t:BuildAKVNetFx -p:BuildNumber=${{ parameters.buildNumber }}'
97+
msbuildArguments: '-t:BuildAKVNetFx -p:BuildNumber=${{ parameters.buildNumber }} -p:ExtensionsPackageVersion=${{parameters.extensionsPackageVersion}}.${{parameters.buildNumber}}'
9398

9499
- task: MSBuild@1
95100
displayName: 'Build AKV Provider NetCore All OS [Win]'
@@ -99,7 +104,7 @@ steps:
99104
msbuildArchitecture: x64
100105
platform: '${{ parameters.platform }}'
101106
configuration: '${{ parameters.configuration }}'
102-
msbuildArguments: '-t:BuildAKVNetCoreAllOS -p:BuildNumber=${{ parameters.buildNumber }}'
107+
msbuildArguments: '-t:BuildAKVNetCoreAllOS -p:BuildNumber=${{ parameters.buildNumber }} -p:ExtensionsPackageVersion=${{parameters.extensionsPackageVersion}}.${{parameters.buildNumber}}'
103108

104109
- ${{ if or(eq(parameters.operatingSystem, 'Linux'), eq(parameters.operatingSystem, 'MacOS'), eq(parameters.operatingSystem, 'deferedToRuntime')) }}:
105110
- task: DotNetCoreCLI@2
@@ -109,7 +114,7 @@ steps:
109114
command: custom
110115
projects: build.proj
111116
custom: msbuild
112-
arguments: '-t:BuildAll -p:TestEnabled=true -p:GenerateDocumentationFile=false -p:configuration=${{ parameters.configuration }}'
117+
arguments: '-t:BuildAll -p:TestEnabled=true -p:GenerateDocumentationFile=false -p:configuration=${{ parameters.configuration }} -p:ExtensionsPackageVersion=${{parameters.extensionsPackageVersion}}.${{parameters.buildNumber}}'
113118
verbosityRestore: Detailed
114119
verbosityPack: Detailed
115120
retryCountOnTaskFailure: 1

eng/pipelines/common/templates/steps/update-nuget-config-local-feed-step.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ steps:
3434
[Xml] $nugetConfig = Get-Content -Path "NuGet.config"
3535
$Value = Resolve-Path ${{parameters.downloadedNugetPath }}
3636
$newAdd = $nugetConfig.CreateElement("add")
37-
$newAdd.SetAttribute("key","Package source")
37+
$newAdd.SetAttribute("key","pipeline")
3838
$newAdd.SetAttribute("value", "$Value/" )
3939
$nugetConfig.configuration.packageSources.AppendChild($newAdd)
4040
$nugetConfig.Save("$rootFolder/NuGet.config")

0 commit comments

Comments
 (0)