Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 22 additions & 8 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,28 @@
<!-- ===================================================================== -->
<!-- Driver Packages -->

<!--
Version range properties (e.g. SqlServerVersionRange, LoggingVersionRange,
AbstractionsVersionRange, MdsVersionRange, AzureVersionRange, AkvVersionRange,
SniVersionRange) are computed in tools/props/Versions.props, which is imported
via Directory.Build.props before this file is evaluated.

Import order guarantee: Directory.Build.props is imported early in
Microsoft.Common.props (part of the SDK's initial props chain), whereas
Directory.Packages.props is processed later by NuGet's SDK integration.
See:
- https://learn.microsoft.com/visualstudio/msbuild/customize-by-directory#import-order
- https://learn.microsoft.com/nuget/consume-packages/central-package-management
-->

Comment thread
paulmedynski marked this conversation as resolved.
<!-- Ordered from least dependent to most dependent, and then alphabetically. -->

<ItemGroup>
<!--
We never reference this package via its project, so we always need a
version specified.
-->
<PackageVersion Include="Microsoft.SqlServer.Server" Version="1.0.0" />
<PackageVersion Include="Microsoft.SqlServer.Server" Version="$(SqlServerVersionRange)" />
</ItemGroup>

<!--
Expand All @@ -31,19 +45,19 @@
<ItemGroup Condition="'$(ReferenceType)' == 'Package'">
<PackageVersion
Include="Microsoft.Data.SqlClient.Internal.Logging"
Version="$(LoggingPackageVersion)" />
Version="$(LoggingVersionRange)" />
<PackageVersion
Include="Microsoft.Data.SqlClient.Extensions.Abstractions"
Version="$(AbstractionsPackageVersion)" />
Version="$(AbstractionsVersionRange)" />
<PackageVersion
Include="Microsoft.Data.SqlClient.Extensions.Azure"
Version="$(AzurePackageVersion)" />
Version="$(AzureVersionRange)" />
<PackageVersion
Include="Microsoft.Data.SqlClient"
Version="$(MdsPackageVersion)" />
Version="$(MdsVersionRange)" />
<PackageVersion
Include="Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider"
Version="$(AkvPackageVersion)" />
Version="$(AkvVersionRange)" />
</ItemGroup>

<!-- ===================================================================== -->
Expand Down Expand Up @@ -89,8 +103,8 @@
<!-- SqlClient Dependencies -->

<ItemGroup>
<PackageVersion Include="Microsoft.Data.SqlClient.SNI" Version="6.0.2" />
<PackageVersion Include="Microsoft.Data.SqlClient.SNI.runtime" Version="6.0.2" />
<PackageVersion Include="Microsoft.Data.SqlClient.SNI" Version="$(SniVersionRange)" />
<PackageVersion Include="Microsoft.Data.SqlClient.SNI.runtime" Version="$(SniVersionRange)" />
<PackageVersion Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.16.0" />
<PackageVersion Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="8.16.0" />
<PackageVersion Include="System.Buffers" Version="4.6.1" />
Expand Down
27 changes: 17 additions & 10 deletions eng/pipelines/common/templates/jobs/ci-build-nugets-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -143,16 +143,23 @@ jobs:
abstractionsPackageVersion: ${{parameters.abstractionsPackageVersion}}
loggingPackageVersion: ${{ parameters.loggingPackageVersion }}

- template: /eng/pipelines/common/templates/steps/generate-nuget-package-step.yml@self
parameters:
buildConfiguration: ${{ parameters.buildConfiguration }}
displayName: 'Create MDS NuGet Package'
generateSymbolsPackage: true
nuspecPath: 'tools/specs/Microsoft.Data.SqlClient.nuspec'
outputDirectory: $(packagePath)
packageVersion: ${{ parameters.mdsPackageVersion }}
properties: 'AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }};LoggingPackageVersion=${{ parameters.loggingPackageVersion }}'
referenceType: ${{ parameters.referenceType }}
# Create the MDS NuGet package via build.proj's GenerateMdsPackage target.
# This target has access to the version range properties computed in
# Versions.props, so it passes them through to nuget pack automatically.
- task: DotNetCoreCLI@2
displayName: 'Create MDS NuGet Package'
inputs:
command: build
projects: build.proj
arguments: >-
-t:GenerateMdsPackage
-p:GenerateNuget=true
-p:Configuration=${{ parameters.buildConfiguration }}
-p:ReferenceType=${{ parameters.referenceType }}
-p:MdsPackageVersion=${{ parameters.mdsPackageVersion }}
-p:AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }}
-p:LoggingPackageVersion=${{ parameters.loggingPackageVersion }}
-p:PackagesDir=$(packagePath)

# When building in Package mode, the AKV Provider restore needs to find the MDS package
# we just built. Copy it to the local NuGet feed so NuGet.config can resolve it.
Expand Down

This file was deleted.

5 changes: 5 additions & 0 deletions eng/pipelines/dotnet-sqlclient-ci-core.yml
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,9 @@ stages:
buildConfiguration: ${{ parameters.buildConfiguration }}
debug: ${{ parameters.debug }}
dotnetVerbosity: ${{ parameters.dotnetVerbosity }}
loggingArtifactsName: $(loggingArtifactsName)
loggingPackageVersion: $(loggingPackageVersion)
referenceType: ${{ parameters.referenceType }}
# When building Abstractions via packages, we must depend on the Logging
# package.
${{ if eq(parameters.referenceType, 'Package') }}:
Expand Down Expand Up @@ -198,6 +201,8 @@ stages:
- build_logging_package_stage
- build_sqlclient_package_stage
dotnetVerbosity: ${{ parameters.dotnetVerbosity }}
loggingArtifactsName: $(loggingArtifactsName)
loggingPackageVersion: $(loggingPackageVersion)
mdsArtifactsName: $(mdsArtifactsName)
mdsPackageVersion: $(mdsPackageVersion)
referenceType: ${{ parameters.referenceType }}
Expand Down
67 changes: 58 additions & 9 deletions eng/pipelines/jobs/pack-abstractions-package-ci-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,30 @@ parameters:
- detailed
- diagnostic

# The name of the Logging pipeline artifacts to download.
#
# This is used when the referenceType is 'Package'.
- name: loggingArtifactsName
type: string
default: Logging.Artifacts

# The Logging package version to depend on.
#
# This is used when the referenceType is 'Package'.
- name: loggingPackageVersion
type: string
default: ''

# The C# project reference type to use when building and packing the packages.
- name: referenceType
type: string
default: Project
values:
# Reference sibling packages as NuGet packages.
- Package
# Reference sibling packages as C# projects.
- Project

jobs:

- job: pack_abstractions_package_job
Expand Down Expand Up @@ -104,21 +128,46 @@ jobs:
- pwsh: 'Get-ChildItem Env: | Sort-Object Name'
displayName: '[Debug] Print Environment Variables'

# For Package reference builds, we must first download the dependency
# package artifacts.
- ${{ if eq(parameters.referenceType, 'Package') }}:
- task: DownloadPipelineArtifact@2
displayName: Download Logging Package Artifacts
inputs:
artifactName: ${{ parameters.loggingArtifactsName }}
targetPath: $(Build.SourcesDirectory)/packages

# Install the .NET SDK.
- template: /eng/pipelines/steps/install-dotnet.yml@self
parameters:
debug: ${{ parameters.debug }}

# Create the NuGet packages.
- task: DotNetCoreCLI@2
displayName: Create NuGet Package
inputs:
command: pack
packagesToPack: $(project)
configurationToPack: ${{ parameters.buildConfiguration }}
packDirectory: $(dotnetPackagesDir)
verbosityToPack: ${{ parameters.dotnetVerbosity }}
buildProperties: AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }};AbstractionsAssemblyFileVersion=${{ parameters.abstractionsAssemblyFileVersion }}
#
# When referenceType is Package, we must pass ReferenceType and the
# dependency version so that Directory.Packages.props applies version
# ranges to sibling package dependencies.
- ${{ if eq(parameters.referenceType, 'Package') }}:
- task: DotNetCoreCLI@2
displayName: Create NuGet Package
inputs:
command: pack
packagesToPack: $(project)
configurationToPack: ${{ parameters.buildConfiguration }}
packDirectory: $(dotnetPackagesDir)
verbosityToPack: ${{ parameters.dotnetVerbosity }}
buildProperties: AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }};AbstractionsAssemblyFileVersion=${{ parameters.abstractionsAssemblyFileVersion }};ReferenceType=Package;LoggingPackageVersion=${{ parameters.loggingPackageVersion }}

- ${{ else }}:
- task: DotNetCoreCLI@2
displayName: Create NuGet Package
inputs:
command: pack
packagesToPack: $(project)
configurationToPack: ${{ parameters.buildConfiguration }}
packDirectory: $(dotnetPackagesDir)
verbosityToPack: ${{ parameters.dotnetVerbosity }}
buildProperties: AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }};AbstractionsAssemblyFileVersion=${{ parameters.abstractionsAssemblyFileVersion }}

# Publish the NuGet packages as a named pipeline artifact.
- task: PublishPipelineArtifact@1
Expand Down
43 changes: 33 additions & 10 deletions eng/pipelines/jobs/pack-azure-package-ci-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,19 @@ parameters:
type: string
default: Logging.Artifacts

# The Abstractions package verion to depend on.
# The Abstractions package version to depend on.
#
# This is used when the referenceType is 'Package'.
- name: abstractionsPackageVersion
type: string

# The Logging package version to depend on.
#
# This is used when the referenceType is 'Package'.
- name: loggingPackageVersion
type: string
default: ''

# The name of the pipeline artifacts to publish.
- name: azureArtifactsName
type: string
Expand Down Expand Up @@ -153,15 +160,31 @@ jobs:
debug: ${{ parameters.debug }}

# Create the NuGet packages.
- task: DotNetCoreCLI@2
displayName: Create NuGet Package
inputs:
command: pack
packagesToPack: $(project)
configurationToPack: ${{ parameters.buildConfiguration }}
packDirectory: $(dotnetPackagesDir)
verbosityToPack: ${{ parameters.dotnetVerbosity }}
buildProperties: AzurePackageVersion=${{ parameters.azurePackageVersion }};AzureAssemblyFileVersion=${{ parameters.azureAssemblyFileVersion }}
#
# When referenceType is Package, we must pass ReferenceType and the
# dependency versions so that Directory.Packages.props applies version
# ranges to sibling package dependencies.
- ${{ if eq(parameters.referenceType, 'Package') }}:
- task: DotNetCoreCLI@2
displayName: Create NuGet Package
inputs:
command: pack
packagesToPack: $(project)
configurationToPack: ${{ parameters.buildConfiguration }}
packDirectory: $(dotnetPackagesDir)
verbosityToPack: ${{ parameters.dotnetVerbosity }}
buildProperties: AzurePackageVersion=${{ parameters.azurePackageVersion }};AzureAssemblyFileVersion=${{ parameters.azureAssemblyFileVersion }};ReferenceType=Package;LoggingPackageVersion=${{ parameters.loggingPackageVersion }};AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }}

- ${{ else }}:
- task: DotNetCoreCLI@2
displayName: Create NuGet Package
inputs:
command: pack
packagesToPack: $(project)
configurationToPack: ${{ parameters.buildConfiguration }}
packDirectory: $(dotnetPackagesDir)
verbosityToPack: ${{ parameters.dotnetVerbosity }}
buildProperties: AzurePackageVersion=${{ parameters.azurePackageVersion }};AzureAssemblyFileVersion=${{ parameters.azureAssemblyFileVersion }}

# Publish the NuGet packages as a named pipeline artifact.
- task: PublishPipelineArtifact@1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,17 +93,23 @@ jobs:
sourceRoot: $(BUILD_OUTPUT)
dllPattern: 'Microsoft.Data.SqlClient.resources.dll'

- template: /eng/pipelines/common/templates/steps/generate-nuget-package-step.yml@self
parameters:
buildConfiguration: Release
displayName: 'Create MDS NuGet Package'
generateSymbolsPackage: true
installNuget: false
nuspecPath: $(nuspecPath)
outputDirectory: $(PACK_OUTPUT)
packageVersion: $(mdsPackageVersion)
properties: 'AbstractionsPackageVersion=$(abstractionsPackageVersion);LoggingPackageVersion=$(loggingPackageVersion)'
referenceType: Package
# Create the MDS NuGet package via build.proj's GenerateMdsPackage target.
# This target has access to the version range properties computed in
# Versions.props, so it passes them through to nuget pack automatically.
- task: DotNetCoreCLI@2
displayName: 'Create MDS NuGet Package'
inputs:
command: build
projects: $(REPO_ROOT)/build.proj
arguments: >-
-t:GenerateMdsPackage
-p:GenerateNuget=true
-p:Configuration=Release
-p:ReferenceType=Package
-p:MdsPackageVersion=$(mdsPackageVersion)
-p:AbstractionsPackageVersion=$(abstractionsPackageVersion)
-p:LoggingPackageVersion=$(loggingPackageVersion)
-p:PackagesDir=$(PACK_OUTPUT)

- template: /eng/pipelines/onebranch/steps/esrp-code-signing-step.yml@self
parameters:
Expand Down
Loading
Loading