diff --git a/build.proj b/build.proj
index 28b9a99eb4..1123e37b90 100644
--- a/build.proj
+++ b/build.proj
@@ -443,7 +443,6 @@
-
diff --git a/eng/pipelines/akv-official-pipeline.yml b/eng/pipelines/akv-official-pipeline.yml
index d7bc900bb8..afdc00c8a7 100644
--- a/eng/pipelines/akv-official-pipeline.yml
+++ b/eng/pipelines/akv-official-pipeline.yml
@@ -113,7 +113,7 @@ extends:
sbom:
enabled: ${{ parameters.runSdlTasks }}
packageName: 'Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider'
- packageVersion: ${{ variables.nugetPackageVersion }}
+ packageVersion: ${{ variables.akvPackageVersion }}
tsa:
# OneBranch publishes all sdl results to TSA. If TSA is disabled all SDL tools will
@@ -131,7 +131,7 @@ extends:
apiScanPdbPath: '${{ variables.apiScanPdbPath }}'
assemblyFileVersion: '${{ variables.assemblyFileVersion }}'
buildConfiguration: '${{ parameters.buildConfiguration }}'
- nugetPackageVersion: '${{ variables.nugetPackageVersion }}'
+ akvPackageVersion: '${{ variables.akvPackageVersion }}'
mdsPackageVersion: '${{ variables.mdsPackageVersion }}'
publishSymbols: '${{ parameters.publishSymbols }}'
signingAppRegistrationClientId: '$(SigningAppRegistrationClientId)'
diff --git a/eng/pipelines/common/templates/jobs/build-signed-package-job.yml b/eng/pipelines/common/templates/jobs/build-signed-package-job.yml
index 21539540df..3b9edcea87 100644
--- a/eng/pipelines/common/templates/jobs/build-signed-package-job.yml
+++ b/eng/pipelines/common/templates/jobs/build-signed-package-job.yml
@@ -27,8 +27,10 @@ jobs:
variables:
- template: ../../../libraries/variables.yml@self
- ${{ if parameters.isPreview }}:
- - name: NugetPackageVersion
- value: $(PreviewNugetPackageVersion)
+ - name: abstrationsPackageVersion
+ value: $(abstractionsPackagePreviewVersion)
+ - name: mdsPackageVersion
+ value: $(previewMdsPackageVersion)
steps:
- script: SET
@@ -37,20 +39,43 @@ jobs:
- powershell: |
Write-Host "##vso[task.setvariable variable=CDP_BUILD_TYPE_COPY;isOutput=true]$($env:CDP_BUILD_TYPE)"
name: GetBuildType
-
- - template: ../steps/build-all-configurations-signed-dlls-step.yml@self
-
+
+ # Build our tooling, which is required by the analysis step below, but
+ # shouldn't be analyzed itself.
+ - task: MSBuild@1
+ displayName: 'Build Tooling'
+ inputs:
+ solution: '**/build.proj'
+ configuration: $(Configuration)
+ msbuildArguments: -t:BuildTools
+
+ # GOTCHA: This analysis step must run _before_ the build (below) step because
+ # it builds DLLs that would otherwise clobber the properly-versioned DLLs from
+ # the build step!
- template: ../steps/code-analyze-step.yml@self
parameters:
analyzeType: all
+ - template: ../steps/build-all-configurations-signed-dlls-step.yml@self
+ parameters:
+ # These values are sourced from common-variables.yml.
+ configuration: $(Configuration)
+ abstractionsPackageVersion: $(abstractionsPackageVersion)
+ abstractionsAssemblyFileVersion: $(abstractionsAssemblyFileVersion)
+ mdsPackageVersion: $(mdsPackageVersion)
+ mdsAssemblyFileVersion: $(mdsAssemblyFileVersion)
+
- template: ../steps/esrp-code-signing-step.yml@self
parameters:
artifactType: dll
- template: ../steps/generate-nuget-package-step.yml@self
parameters:
- OutputDirectory: $(artifactDirectory)
+ nuspecPath: $(nuspecPath)
+ packageVersion: $(mdsPackageVersion)
+ outputDirectory: $(artifactDirectory)
+ displayName: 'Create MDS NuGet Package'
+ referenceType: Package
properties: 'AbstractionsPackageVersion=$(abstractionsPackageVersion)'
- template: ../steps/esrp-code-signing-step.yml@self
@@ -65,4 +90,4 @@ jobs:
- template: ../steps/publish-symbols-step.yml@self
parameters:
publishSymbols: ${{ parameters['PublishSymbols'] }}
- symbolsArtifactName: mds_symbols_$(System.TeamProject)_$(Build.Repository.Name)_$(Build.SourceBranchName)_$(NuGetPackageVersion)_$(System.TimelineId)
+ symbolsArtifactName: mds_symbols_$(System.TeamProject)_$(Build.Repository.Name)_$(Build.SourceBranchName)_$(mdsPackageVersion)_$(System.TimelineId)
diff --git a/eng/pipelines/common/templates/jobs/ci-build-nugets-job.yml b/eng/pipelines/common/templates/jobs/ci-build-nugets-job.yml
index 5642d5be47..dc68462f1a 100644
--- a/eng/pipelines/common/templates/jobs/ci-build-nugets-job.yml
+++ b/eng/pipelines/common/templates/jobs/ci-build-nugets-job.yml
@@ -4,6 +4,17 @@
# See the LICENSE file in the project root for more information. #
#################################################################################
parameters:
+
+ - name: 'debug'
+ type: boolean
+ default: false
+
+ - name: referenceType
+ type: string
+ values:
+ - Package
+ - Project
+
- name: poolName
type: string
default: $(ci_var_defaultPoolName)
@@ -12,9 +23,13 @@ parameters:
type: string
default: ADO-MMS22-SQL19
- - name: artifactName
+ - name: abstractionsArtifactName
type: string
- default: Artifacts
+ default: Abstractions.Artifact
+
+ - name: mdsArtifactName
+ type: string
+ default: MDS.Artifact
- name: platform
type: string
@@ -28,8 +43,15 @@ parameters:
type: stepList
default: []
+ - name: abstractionsPackageVersion
+ type: string
+
+ - name: mdsPackageVersion
+ type: string
+
jobs:
-- job: build_nugets
+- job: build_mds_akv_packages_job
+ displayName: Build MDS & AKV Packages
pool:
name: ${{parameters.poolName }}
@@ -44,36 +66,65 @@ jobs:
- ${{ if ne(parameters.prebuildSteps, '') }}:
- ${{ parameters.prebuildSteps }} # extra steps to run before the build like downloading sni and the required configuration
+ # If we're testing in Package mode, download the Abstractions package artifacts into packages/,
+ # and then setup the top-level NuGet.config to look in packages/ for local
+ # NuGet dependencies.
+ - ${{ if eq(parameters.referenceType, 'Package') }}:
+ - task: DownloadPipelineArtifact@2
+ displayName: Download Abstractions Package Artifact
+ inputs:
+ artifactName: ${{ parameters.abstractionsArtifactName }}
+ targetPath: $(packagePath)
+ # Note that packages/ will have been created by the above step, which is a
+ # pre-requisite for configuring NuGet.
+ - template: ../steps/ci-prebuild-step.yml@self
+ parameters:
+ debug: ${{ parameters.debug }}
+ referenceType: ${{ parameters.referenceType }}
+
- template: ../steps/ci-project-build-step.yml@self
parameters:
platform: ${{ parameters.platform }}
configuration: ${{ parameters.configuration }}
+ referenceType: ${{ parameters.referenceType }}
operatingSystem: Windows
- build: all
+ build: MDS
+ abstractionsPackageVersion: ${{parameters.abstractionsPackageVersion}}
- template: ../steps/generate-nuget-package-step.yml@self
parameters:
- NugetPackageVersion: $(NugetPackageVersion)
+ packageVersion: ${{ parameters.mdsPackageVersion }}
configuration: $(Configuration)
nuspecPath: 'tools/specs/Microsoft.Data.SqlClient.nuspec'
- OutputDirectory: $(packagePath)
+ outputDirectory: $(packagePath)
generateSymbolsPackage: false
- properties: 'AbstractionsPackageVersion=$(abstractionsPackageVersion)'
- displayName: 'Generate NuGet package M.D.SqlClient'
+ referenceType: ${{ parameters.referenceType }}
+ properties: 'AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }}'
+ displayName: 'Create MDS NuGet Package'
+
+ - template: ../steps/ci-project-build-step.yml@self
+ parameters:
+ platform: ${{ parameters.platform }}
+ configuration: ${{ parameters.configuration }}
+ referenceType: ${{ parameters.referenceType }}
+ operatingSystem: Windows
+ build: AKV
+ mdsPackageVersion: ${{parameters.mdsPackageVersion}}
- template: ../steps/generate-nuget-package-step.yml@self
parameters:
- NugetPackageVersion: $(NugetPackageVersion)
+ packageVersion: $(akvPackageVersion)
configuration: $(Configuration)
nuspecPath: 'tools/specs/add-ons/Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider.nuspec'
- OutputDirectory: $(packagePath)
+ outputDirectory: $(packagePath)
generateSymbolsPackage: false
- properties: 'MdsPackageVersion=$(mdsPackageVersion)'
+ referenceType: ${{ parameters.referenceType }}
+ properties: 'MdsPackageVersion=${{ parameters.mdsPackageVersion }}'
installNuget: false
- displayName: 'Generate NuGet package AKV Provider'
+ displayName: 'Create AKV NuGet Package'
- - task: PublishBuildArtifacts@1
- displayName: 'Publish Artifact: Artifacts'
+ - task: PublishPipelineArtifact@1
+ displayName: 'Publish Pipeline Artifact'
inputs:
- PathtoPublish: $(packagePath)
- ArtifactName: ${{ parameters.artifactName }}
+ targetPath: $(packagePath)
+ artifactName: ${{ parameters.mdsArtifactName }}
diff --git a/eng/pipelines/common/templates/jobs/ci-run-tests-job.yml b/eng/pipelines/common/templates/jobs/ci-run-tests-job.yml
index dbf5b10028..06bc31911b 100644
--- a/eng/pipelines/common/templates/jobs/ci-run-tests-job.yml
+++ b/eng/pipelines/common/templates/jobs/ci-run-tests-job.yml
@@ -4,12 +4,31 @@
# See the LICENSE file in the project root for more information. #
#################################################################################
parameters:
+ - name: abstractionsArtifactName
+ type: string
+
+ - name: abstractionsPackageVersion
+ type: string
+
+ - name: configProperties
+ type: object
+ default: {} # - key: 'value'
+
+ - name: configSqlFor
+ type: string # local, azure, or enclave
+ default: local
+
- name: debug
type: boolean
default: false
- - name: poolName
- type: string
+ - name: enableX64Test
+ type: boolean
+ default: true
+
+ - name: enableX86Test
+ type: boolean
+ default: false
- name: hostedPool
type: boolean
@@ -21,63 +40,51 @@ parameters:
- name: jobDisplayName
type: string
- - name: usemanagedSNI
- type: boolean
- default: false
-
- - name: configProperties
- type: object
- default: {} # - key: 'value'
-
- - name: prebuildSteps
- type: stepList
- default: []
-
- - name: artifactName
+ - name: mdsArtifactName
type: string
- default: Artifacts
- - name: targetFramework
+ - name: mdsPackageVersion
type: string
- name: netcoreVersionTestUtils
type: string
+
+ - name: operatingSystem
+ type: string
+ default: ''
- - name: enableX86Test
- type: boolean
- default: false
-
- - name: enableX64Test
- type: boolean
- default: true
-
- - name: testSet
+ - name: poolName
type: string
+
+ - name: prebuildSteps
+ type: stepList
+ default: []
- name: publishTestResults
type: boolean
default: false
-
- - name: configSqlFor
- type: string # local, azure, or enclave
- default: local
-
- - name: operatingSystem
+
+ - name: referenceType
type: string
- default: ''
-
- - name: buildType
- displayName: 'Build Type'
- default: Project
values:
- Project
- Package
+ - name: targetFramework
+ type: string
+
+ - name: testSet
+ type: string
+
# The timeout, in minutes, for this job.
- name: timeout
type: string
default: 90
+ - name: usemanagedSNI
+ type: boolean
+ default: false
+
jobs:
- job: ${{ format('{0}', coalesce(parameters.jobDisplayName, parameters.image, 'unknown_image')) }}
@@ -98,6 +105,22 @@ jobs:
value: '$(dotnetx86Path)'
steps:
+
+ # If we're testing in Package mode, download the Abstractions and MDS package
+ # artifacts and put them in the packages/ directory in the repo root.
+ - ${{ if eq(parameters.referenceType, 'Package') }}:
+ - task: DownloadPipelineArtifact@2
+ displayName: Download Abstractions Package Artifact
+ inputs:
+ artifactName: ${{ parameters.abstractionsArtifactName }}
+ targetPath: $(Build.SourcesDirectory)/packages
+
+ - task: DownloadPipelineArtifact@2
+ displayName: Download MDS Package Artifact
+ inputs:
+ artifactName: ${{ parameters.mdsArtifactName }}
+ targetPath: $(Build.SourcesDirectory)/packages
+
- ${{ if ne(parameters.prebuildSteps, '') }}:
- ${{ parameters.prebuildSteps }} # extra steps to run before the build like downloading sni and the required configuration
@@ -227,8 +250,10 @@ jobs:
- template: ../steps/build-all-tests-step.yml@self # build tests
parameters:
targetFramework: ${{ parameters.targetFramework }}
- referenceType: ${{ parameters.buildType }}
+ referenceType: ${{ parameters.referenceType }}
testSet: ${{ parameters.testSet }}
+ abstractionsPackageVersion: ${{ parameters.abstractionsPackageVersion }}
+ mdsPackageVersion: ${{ parameters.mdsPackageVersion }}
${{ if ne(parameters.operatingSystem, 'Windows') }}:
OSGroup: Unix
@@ -237,7 +262,7 @@ jobs:
parameters:
debug: ${{ parameters.debug }}
targetFramework: ${{ parameters.targetFramework }}
- referenceType: ${{ parameters.buildType }}
+ referenceType: ${{ parameters.referenceType }}
testSet: ${{ parameters.testSet }}
operatingSystem: ${{ parameters.operatingSystem }}
@@ -279,13 +304,13 @@ jobs:
parameters:
debug: ${{ parameters.debug }}
targetFramework: ${{ parameters.targetFramework }}
- referenceType: ${{ parameters.buildType }}
+ referenceType: ${{ parameters.referenceType }}
testSet: ${{ parameters.testSet }}
msbuildArchitecture: x86
dotnetx86RootPath: $(dotnetx86RootPath)
operatingSystem: ${{ parameters.operatingSystem }}
- - ${{ if and(eq(parameters.publishTestResults, true), eq(parameters.buildType, 'Project')) }}: # publish test results if build type is project
+ - ${{ if and(eq(parameters.publishTestResults, true), eq(parameters.referenceType, 'Project')) }}: # publish test results if build type is project
- template: ../steps/publish-test-results-step.yml@self
parameters:
debug: ${{ parameters.debug }}
diff --git a/eng/pipelines/common/templates/jobs/run-tests-package-reference-job.yml b/eng/pipelines/common/templates/jobs/run-tests-package-reference-job.yml
index 14aea42411..c422ffdc34 100644
--- a/eng/pipelines/common/templates/jobs/run-tests-package-reference-job.yml
+++ b/eng/pipelines/common/templates/jobs/run-tests-package-reference-job.yml
@@ -52,8 +52,6 @@ jobs:
- template: ../steps/update-nuget-config-local-feed-step.yml
parameters:
downloadedNugetPath: $(Pipeline.Workspace)\${{parameters.packageFolderName }}
- ${{ if parameters.isPreview }}:
- nugetPackageVersion: $(PreviewNugetPackageVersion)
- template: ../steps/update-config-file-step.yml
parameters:
@@ -68,11 +66,11 @@ jobs:
parameters:
referenceType: Package
${{ if parameters.isPreview }}:
- nugetPackageVersion: $(PreviewNugetPackageVersion)
+ mdsPackageVersion: $(previewMdsPackageVersion)
- template: ../steps/build-and-run-tests-netcore-step.yml
parameters:
referenceType: Package
cleanFirst: true
${{ if parameters.isPreview }}:
- nugetPackageVersion: $(PreviewNugetPackageVersion)
+ mdsPackageVersion: $(previewMdsPackageVersion)
diff --git a/eng/pipelines/common/templates/jobs/validate-signed-package-job.yml b/eng/pipelines/common/templates/jobs/validate-signed-package-job.yml
index 009e6f2647..42000da697 100644
--- a/eng/pipelines/common/templates/jobs/validate-signed-package-job.yml
+++ b/eng/pipelines/common/templates/jobs/validate-signed-package-job.yml
@@ -25,14 +25,6 @@ parameters:
- pdb
- both
- - name: assembly_file_version_netfx
- type: string
- default: $(AssemblyFileVersion)
-
- - name: assembly_file_version_core
- type: string
- default: $(AssemblyFileVersion)
-
- name: isPreview
type: boolean
@@ -53,19 +45,14 @@ jobs:
- name: pathToDownloadedNuget # path to the downloaded nuget files
value: $(Pipeline.Workspace)\${{parameters.packageFolderName }}
- - name: ProductVersion #MDS product version (MDS validation)
- value: $(NugetPackageVersion)
-
- name: BuildType
value: $[ stageDependencies.buildMDS.build_signed_package.outputs['GetBuildType.CDP_BUILD_TYPE_COPY'] ]
- ${{ if parameters.isPreview }}:
- name: extractedNugetPath
- value: $(extractedNugetRootPath).$(PreviewNugetPackageVersion)
- - name: NugetPackageVersion
- value: $(PreviewNugetPackageVersion)
- - name: ProductVersion
- value: $(PreviewNugetPackageVersion)
+ value: $(extractedNugetRootPath).$(previewMdsPackageVersion)
+ - name: mdsPackageVersion
+ value: $(previewMdsPackageVersion)
steps:
- script: SET
@@ -75,7 +62,7 @@ jobs:
displayName: 'Use NuGet'
- powershell: |
- #Sets Variables for AssemblyFileVersion, AssemblyVersion and NugetPackageVersion
+ # Sets the pipeline ASSEMBLY_VERSION variable.
[Xml] $versionprops = Get-Content -Path ".\tools\props\Versions.props"
Write-Host $versionprops.Project.PropertyGroup[0].AssemblyFileVersion
@@ -283,60 +270,47 @@ jobs:
displayName: 'Verify all dlls status are Valid'
- powershell: |
- # This will check for ProductVersion and FileVersion.
- #
- # For NetFx we have a different FileVersion, but product versions are all
- # the same. Some may have extra numbering at the end. We only check for
- # the first parts.
+ # This will check each DLL's ProductVersion and FileVersion against
+ # expected values.
+ $failed = 0
foreach ( $pVersion in Get-ChildItem *.dll -Path $(extractedNugetPath) -Recurse | ForEach-Object versioninfo )
{
- if ($pVersion.ProductVersion -Like '$(ProductVersion)*')
+ if ($pVersion.ProductVersion -Like '$(mdsPackageVersion)*')
{
- Write-Host Valid Product Version:"$pVersion.ProductVersion" $pVersion.ProductVersion detected for $pVersion.FileName -ForegroundColor Green
+ Write-Host -ForegroundColor Green "Correct ProductVersion detected for $($pVersion.FileName): $($pVersion.ProductVersion)"
}
else
{
- Write-Host "Wrong ProductVersion detected. Expected: '$(ProductVersion)', but Detected: "$pVersion.ProductVersion""
- Exit -1
+ Write-Host -ForegroundColor Red "Wrong ProductVersion detected for $($pVersion.FileName); expected: $(mdsPackageVersion); found: $($pVersion.ProductVersion)"
+ $failed = 1
}
- if($pVersion.FileName -like '*lib\$(CurrentNetFxVersion)*'){
-
- if($pVersion.FileVersion -eq '${{parameters.assembly_file_version_netfx }}')
- {
- Write-Host 'Correct File version Detected for net46,' $pVersion.FileVersion -ForegroundColor Green
- }
- else
- {
- Write-Host 'Wrong File version Detected for net46,' $pVersion.FileVersion -ForegroundColor Red
- Exit -1
- }
+ if ($pVersion.FileVersion -eq '$(mdsAssemblyFileVersion)')
+ {
+ Write-Host -ForegroundColor Green "Correct FileVersion detected for $($pVersion.FileName): $($pVersion.FileVersion)"
}
else
{
-
- if($pVersion.FileVersion -eq '${{parameters.assembly_file_version_core}}')
- {
- Write-Host 'Correct File version Detected for netcore,' $pVersion.FileVersion -ForegroundColor Green
- }
- else
- {
- Write-Host 'Wrong File version Detected for netcore and ref folder,' $pVersion.FileVersion -ForegroundColor Red
- Exit -1
- }
+ Write-Host -ForegroundColor Red "Wrong FileVersion detected for $($pVersion.FileName); expected $(mdsAssemblyFileVersion); found: $($pVersion.FileVersion)"
+ $failed = 1
}
}
- Get-ChildItem *.dll -Path $(extractedNugetPath) -Recurse | ForEach-Object versioninfo
- displayName: 'Verify "File Version" matches provided pipeline variable "ASSEMBLY_FILE_VERSION" for DLLs'
+ if ($failed -ne 0)
+ {
+ Exit -1
+ }
+
+ Get-ChildItem *.dll -Path $(extractedNugetPath) -Recurse | ForEach-Object VersionInfo | Format-List
+ displayName: 'Verify "File Version" matches expected values for DLLs'
- powershell: |
# Change TestMicrosoftDataSqlClientVersion
[Xml] $versionprops = Get-Content -Path "tools/props/Versions.props"
$versionpropspath = "tools\props\Versions.props"
- $versionprops.Project.PropertyGroup[$versionprops.Project.PropertyGroup.Count-1].TestMicrosoftDataSqlClientVersion ="$(NugetPackageVersion)"
+ $versionprops.Project.PropertyGroup[$versionprops.Project.PropertyGroup.Count-1].TestMicrosoftDataSqlClientVersion ="$(mdsPackageVersion)"
Write-Host "Saving Test nuget version at $rootfolder\props ...." -ForegroundColor Green
$versionprops.Save($versionpropspath)
@@ -344,10 +318,16 @@ jobs:
- powershell: |
# Check assembly versions.
+ #
+ # GOTCHA: This expects the Versions.props file having XML elements in a
+ # certain order. If the order changes, this check will fail!
+ #
+ # TODO: This also isn't checking the versions of the actual assemblies in
+ # the package, so it isn't terribly useful.
[Xml] $versionprops = Get-Content -Path "tools/props/Versions.props"
- $AssemblyFileVersion = $versionprops.Project.PropertyGroup[0].AssemblyFileVersion
- $AssemblyVersion = $versionprops.Project.PropertyGroup[0].AssemblyVersion
+ $AssemblyFileVersion = $versionprops.Project.PropertyGroup[2].AssemblyFileVersion
+ $AssemblyVersion = $versionprops.Project.PropertyGroup[2].AssemblyVersion
if($AssemblyFileVersion -eq $AssemblyVersion)
{
diff --git a/eng/pipelines/common/templates/stages/ci-run-tests-stage.yml b/eng/pipelines/common/templates/stages/ci-run-tests-stage.yml
index e07685407f..46318f8e06 100644
--- a/eng/pipelines/common/templates/stages/ci-run-tests-stage.yml
+++ b/eng/pipelines/common/templates/stages/ci-run-tests-stage.yml
@@ -4,31 +4,43 @@
# See the LICENSE file in the project root for more information. #
#################################################################################
parameters:
+ - name: abstractionsArtifactName
+ type: string
+
+ - name: abstractionsPackageVersion
+ type: string
+
- name: debug
type: boolean
default: false
- - name: testConfigurations
+ - name: dependsOn
type: object
+ default: []
- - name: dependsOn
+ - name: mdsArtifactName
+ type: string
+ default: MDS.Artifact
+
+ - name: mdsPackageVersion
type: string
- default: ''
+
+ - name: postTestJobs
+ type: jobList
+ default: []
- - name: buildType
- displayName: 'Build Type'
+ - name: prebuildSteps
+ type: stepList
+ default: []
+
+ - name: referenceType
default: Project
values:
- Project
- Package
- - name: prebuildSteps
- type: stepList
- default: []
-
- - name: postTestJobs
- type: jobList
- default: []
+ - name: testConfigurations
+ type: object
# The timeout, in minutes, for each test job.
- name: testsTimeout
@@ -39,10 +51,7 @@ stages:
- ${{ each config in parameters.testConfigurations }}:
- ${{ each image in config.value.images }}:
- stage: ${{ image.key }}
- ${{ if ne(parameters.dependsOn, '') }}:
- dependsOn: ${{ parameters.dependsOn }}
- ${{ else }}:
- dependsOn: []
+ dependsOn: ${{ parameters.dependsOn }}
jobs:
- ${{ each targetFramework in config.value.TargetFrameworks }}:
- ${{ each platform in config.value.buildPlatforms }}:
@@ -51,13 +60,17 @@ stages:
- template: ../jobs/ci-run-tests-job.yml@self
parameters:
debug: ${{ parameters.debug }}
- buildType: ${{ parameters.buildType }}
+ referenceType: ${{ parameters.referenceType }}
timeout: ${{ parameters.testsTimeout }}
poolName: ${{ config.value.pool }}
hostedPool: ${{ eq(config.value.hostedPool, true) }}
image: ${{ image.value }}
jobDisplayName: ${{ format('{0}_{1}_{2}', replace(targetFramework, '.', '_'), platform, testSet) }}
configProperties: ${{ config.value.configProperties }}
+ abstractionsArtifactName: ${{ parameters.abstractionsArtifactName }}
+ abstractionsPackageVersion: ${{parameters.abstractionsPackageVersion}}
+ mdsArtifactName: ${{ parameters.mdsArtifactName }}
+ mdsPackageVersion: ${{ parameters.mdsPackageVersion }}
prebuildSteps: ${{ parameters.prebuildSteps }}
targetFramework: ${{ targetFramework }}
netcoreVersionTestUtils: ${{config.value.netcoreVersionTestUtils }}
@@ -77,7 +90,7 @@ stages:
- template: ../jobs/ci-run-tests-job.yml@self
parameters:
debug: ${{ parameters.debug }}
- buildType: ${{ parameters.buildType }}
+ referenceType: ${{ parameters.referenceType }}
timeout: ${{ parameters.testsTimeout }}
poolName: ${{ config.value.pool }}
hostedPool: ${{ eq(config.value.hostedPool, true) }}
@@ -88,6 +101,10 @@ stages:
jobDisplayName: ${{ format('{0}_{1}_{2}_{3}', replace(targetFramework, '.', '_'), platform, 'NativeSNI', testSet) }}
configProperties: ${{ config.value.configProperties }}
useManagedSNI: ${{ useManagedSNI }}
+ abstractionsArtifactName: ${{ parameters.abstractionsArtifactName }}
+ abstractionsPackageVersion: ${{parameters.abstractionsPackageVersion}}
+ mdsArtifactName: ${{ parameters.mdsArtifactName }}
+ mdsPackageVersion: ${{ parameters.mdsPackageVersion }}
prebuildSteps: ${{ parameters.prebuildSteps }}
targetFramework: ${{ targetFramework }}
netcoreVersionTestUtils: ${{config.value.netcoreVersionTestUtils }}
diff --git a/eng/pipelines/common/templates/steps/build-all-configurations-signed-dlls-step.yml b/eng/pipelines/common/templates/steps/build-all-configurations-signed-dlls-step.yml
index e6a6c0443a..1f532d7636 100644
--- a/eng/pipelines/common/templates/steps/build-all-configurations-signed-dlls-step.yml
+++ b/eng/pipelines/common/templates/steps/build-all-configurations-signed-dlls-step.yml
@@ -4,23 +4,21 @@
# See the LICENSE file in the project root for more information. #
#################################################################################
parameters:
- - name: AssemblyFileVersion
+
+ - name: abstractionsPackageVersion
+ type: string
+
+ - name: abstractionsAssemblyFileVersion
type: string
- default: $(AssemblyFileVersion)
- - name: Configuration
+ - name: configuration
type: string
- default: '$(Configuration)'
- - name: packageRefMdsVersion
+ - name: mdsPackageVersion
type: string
- default: ''
- - name: product
- default: MDS
- values:
- - MDS
- - MSS
+ - name: mdsAssemblyFileVersion
+ type: string
steps:
- task: DownloadSecureFile@1
@@ -41,10 +39,9 @@ steps:
packageType: runtime
version: '8.x'
-- ${{ if eq(parameters.product, 'MDS') }}:
- - task: MSBuild@1
- displayName: 'BuildAllConfigurations using build.proj'
- inputs:
- solution: '**/build.proj'
- configuration: '${{parameters.Configuration }}'
- msbuildArguments: '-p:AssemblyFileVersion=${{parameters.AssemblyFileVersion }} -t:BuildAllConfigurations -p:GenerateNuget=false -p:SigningKeyPath=$(Agent.TempDirectory)\netfxKeypair.snk'
+- task: MSBuild@1
+ displayName: 'BuildAllConfigurations using build.proj'
+ inputs:
+ solution: '**/build.proj'
+ configuration: '${{ parameters.configuration }}'
+ msbuildArguments: '-t:BuildAllConfigurations -p:GenerateNuget=false -p:SigningKeyPath=$(Agent.TempDirectory)\netfxKeypair.snk -p:MdsPackageVersion=${{ parameters.mdsPackageVersion }} -p:AssemblyFileVersion=${{ parameters.mdsAssemblyFileVersion }} -p:AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }} -p:AbstractionsAssemblyFileVersion=${{ parameters.abstractionsAssemblyFileVersion }}'
diff --git a/eng/pipelines/common/templates/steps/build-all-tests-step.yml b/eng/pipelines/common/templates/steps/build-all-tests-step.yml
index 826be1df8b..43ecb6aafa 100644
--- a/eng/pipelines/common/templates/steps/build-all-tests-step.yml
+++ b/eng/pipelines/common/templates/steps/build-all-tests-step.yml
@@ -4,31 +4,33 @@
# See the LICENSE file in the project root for more information. #
#################################################################################
parameters:
- - name: targetFramework
+ - name: abstractionsPackageVersion
+ type: string
+
+ - name: configuration
+ type: string
+ default: '$(Configuration)'
+
+ - name: mdsPackageVersion
type: string
- - name: nugetPackageVersion
+ - name: osGroup
type: string
- default: $(NugetPackageVersion)
+ default: ''
- name: platform
type: string
default: $(Platform)
-
- - name: configuration
- type: string
- default: '$(Configuration)'
- name: referenceType
- default: Package
+ type: string
values:
- Project
- Package
-
- - name: OSGroup
- type: string
- default: ''
+ - name: targetFramework
+ type: string
+
- name: testSet
type: string
@@ -40,26 +42,16 @@ steps:
solution: build.proj
platform: '${{parameters.platform }}'
configuration: '${{parameters.configuration }}'
- msbuildArguments: '-t:BuildTestsNetFx -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }}'
-
-# - ${{else if contains(parameters.targetFramework, 'netstandard')}}: # .NET Standard
-# - task: MSBuild@1
-# displayName: 'Build Tests NetStandard'
-# inputs:
-# solution: build.proj
-# platform: '${{parameters.platform }}'
-# configuration: '${{parameters.configuration }}'
-# msbuildArguments: '-t:BuildTestsNetCore -p:ReferenceType=NetStandard -p:TargetNetStandardVersion=${{parameters.targetNetStandardVersion }} -p:TF=${{parameters.targetFramework }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }}'
-# condition: and(succeeded(), not(startsWith(variables['TF'], 'net4')), startsWith(variables['TargetNetStandardVersion'], 'netstandard'))
+ msbuildArguments: '-t:BuildTestsNetFx -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }} -p:AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }}'
-- ${{elseif eq(parameters.OSGroup, '')}}: # .NET on Windows
+- ${{elseif eq(parameters.osGroup, '')}}: # .NET on Windows
- task: MSBuild@1
displayName: 'Build Tests NetCore [Win]'
inputs:
solution: build.proj
platform: '${{parameters.platform }}'
configuration: '${{parameters.configuration }}'
- msbuildArguments: '-t:BuildTestsNetCore -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }}'
+ msbuildArguments: '-t:BuildTestsNetCore -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }} -p:AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }}'
condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
- ${{ else }}: # .NET on Unix
@@ -69,7 +61,7 @@ steps:
command: custom
projects: build.proj
custom: msbuild
- arguments: '-t:BuildTestsNetCore -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }} -p:OSGroup=${{parameters.OSGroup }} -p:platform=${{parameters.platform }} -p:Configuration=${{parameters.configuration }}'
+ arguments: '-t:BuildTestsNetCore -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }} -p:OSGroup=${{parameters.osGroup }} -p:platform=${{parameters.platform }} -p:Configuration=${{parameters.configuration }} -p:AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }}'
verbosityRestore: Detailed
verbosityPack: Detailed
condition: and(succeeded(), ne(variables['Agent.OS'], 'Windows_NT'))
diff --git a/eng/pipelines/common/templates/steps/build-and-run-tests-netcore-step.yml b/eng/pipelines/common/templates/steps/build-and-run-tests-netcore-step.yml
index c70fe776a7..43eea4449d 100644
--- a/eng/pipelines/common/templates/steps/build-and-run-tests-netcore-step.yml
+++ b/eng/pipelines/common/templates/steps/build-and-run-tests-netcore-step.yml
@@ -18,9 +18,9 @@ parameters:
- Project
- Package
- - name: NugetPackageVersion
+ - name: mdsPackageVersion
type: string
- default: $(NugetPackageVersion)
+ default: $(mdsPackageVersion)
- name: platform
type: string
@@ -55,14 +55,14 @@ steps:
inputs:
solution: build.proj
msbuildArchitecture: x64
- msbuildArguments: '-p:Configuration=${{parameters.configuration }} -t:BuildAKVNetCore -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.NugetPackageVersion }}'
+ msbuildArguments: '-p:Configuration=${{parameters.configuration }} -t:BuildAKVNetCore -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }}'
- task: MSBuild@1
displayName: 'MSBuild Build Tests for ${{parameters.TargetNetCoreVersion }}'
inputs:
solution: build.proj
msbuildArchitecture: x64
- msbuildArguments: '-t:BuildTestsNetCore -p:ReferenceType=${{parameters.referenceType }} -p:TargetNetCoreVersion=${{parameters.TargetNetCoreVersion }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.NugetPackageVersion }} -p:Configuration=${{parameters.configuration }}'
+ msbuildArguments: '-t:BuildTestsNetCore -p:ReferenceType=${{parameters.referenceType }} -p:TargetNetCoreVersion=${{parameters.TargetNetCoreVersion }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }} -p:Configuration=${{parameters.configuration }}'
# Don't run unit tests using package reference. Unit tests are only run using project reference.
@@ -71,12 +71,12 @@ steps:
inputs:
command: test
projects: 'src\Microsoft.Data.SqlClient\tests\FunctionalTests\Microsoft.Data.SqlClient.FunctionalTests.csproj'
- arguments: '-p:Platform=${{parameters.platform }} -p:TestTargetOS="${{parameters.TestTargetOS }}" -p:TargetNetCoreVersion=${{parameters.TargetNetCoreVersion }} -p:ReferenceType=${{parameters.referenceType }} -p:Configuration=${{parameters.configuration }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.NugetPackageVersion }} --no-build -v n --filter "category!=nonnetcoreapptests&category!=failing&category!=nonwindowstests"'
+ arguments: '-p:Platform=${{parameters.platform }} -p:TestTargetOS="${{parameters.TestTargetOS }}" -p:TargetNetCoreVersion=${{parameters.TargetNetCoreVersion }} -p:ReferenceType=${{parameters.referenceType }} -p:Configuration=${{parameters.configuration }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }} --no-build -v n --filter "category!=nonnetcoreapptests&category!=failing&category!=nonwindowstests"'
- task: DotNetCoreCLI@2
displayName: 'Run Manual Tests for ${{parameters.TargetNetCoreVersion }}'
inputs:
command: test
projects: 'src\Microsoft.Data.SqlClient\tests\ManualTests\Microsoft.Data.SqlClient.ManualTesting.Tests.csproj'
- arguments: '-p:Platform=${{parameters.platform }} -p:TestTargetOS="${{parameters.TestTargetOS }}" -p:TargetNetCoreVersion=${{parameters.TargetNetCoreVersion }} -p:ReferenceType=${{parameters.referenceType }} -p:Configuration=${{parameters.configuration }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.NugetPackageVersion }} --no-build -v n --filter category!=nonnetcoreapptests&category!=failing&category!=nonwindowstests --collect "Code Coverage"'
+ arguments: '-p:Platform=${{parameters.platform }} -p:TestTargetOS="${{parameters.TestTargetOS }}" -p:TargetNetCoreVersion=${{parameters.TargetNetCoreVersion }} -p:ReferenceType=${{parameters.referenceType }} -p:Configuration=${{parameters.configuration }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }} --no-build -v n --filter category!=nonnetcoreapptests&category!=failing&category!=nonwindowstests --collect "Code Coverage"'
retryCountOnTaskFailure: ${{parameters.retryCountOnManualTests }}
diff --git a/eng/pipelines/common/templates/steps/build-and-run-tests-netfx-step.yml b/eng/pipelines/common/templates/steps/build-and-run-tests-netfx-step.yml
index 5d9f194c48..e7b35f653e 100644
--- a/eng/pipelines/common/templates/steps/build-and-run-tests-netfx-step.yml
+++ b/eng/pipelines/common/templates/steps/build-and-run-tests-netfx-step.yml
@@ -18,9 +18,9 @@ parameters:
- Project
- Package
- - name: NugetPackageVersion
+ - name: mdsPackageVersion
type: string
- default: $(NugetPackageVersion)
+ default: $(mdsPackageVersion)
- name: platform
type: string
@@ -55,13 +55,13 @@ steps:
inputs:
solution: build.proj
msbuildArchitecture: x64
- msbuildArguments: '-p:Configuration=${{parameters.configuration }} -t:BuildAKVNetFx -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.NugetPackageVersion }}'
+ msbuildArguments: '-p:Configuration=${{parameters.configuration }} -t:BuildAKVNetFx -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }}'
- task: MSBuild@1
displayName: 'MSBuild Build Tests for ${{parameters.TargetNetFxVersion }}'
inputs:
solution: build.proj
- msbuildArguments: ' -t:BuildTestsNetFx -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.NugetPackageVersion }} -p:TargetNetFxVersion=${{parameters.TargetNetFxVersion }} -p:Configuration=${{parameters.configuration }} -p:Platform=${{parameters.platform }}'
+ msbuildArguments: ' -t:BuildTestsNetFx -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }} -p:TargetNetFxVersion=${{parameters.TargetNetFxVersion }} -p:Configuration=${{parameters.configuration }} -p:Platform=${{parameters.platform }}'
# Don't run unit tests using package reference. Unit tests are only run using project reference.
@@ -70,12 +70,12 @@ steps:
inputs:
command: test
projects: 'src\Microsoft.Data.SqlClient\tests\FunctionalTests\Microsoft.Data.SqlClient.FunctionalTests.csproj'
- arguments: '-p:Platform=${{parameters.platform }} -p:TestTargetOS="${{parameters.TestTargetOS }}" -p:TargetNetFxVersion=${{parameters.TargetNetFxVersion }} -p:ReferenceType=${{parameters.referenceType }} -p:Configuration=${{parameters.configuration }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.NugetPackageVersion }} --no-build -v n --filter "category!=nonnetfxtests&category!=failing&category!=nonwindowstests" --collect "Code Coverage"'
+ arguments: '-p:Platform=${{parameters.platform }} -p:TestTargetOS="${{parameters.TestTargetOS }}" -p:TargetNetFxVersion=${{parameters.TargetNetFxVersion }} -p:ReferenceType=${{parameters.referenceType }} -p:Configuration=${{parameters.configuration }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }} --no-build -v n --filter "category!=nonnetfxtests&category!=failing&category!=nonwindowstests" --collect "Code Coverage"'
- task: DotNetCoreCLI@2
displayName: 'Run Manual Tests for ${{parameters.TargetNetFxVersion }}'
inputs:
command: test
projects: 'src\Microsoft.Data.SqlClient\tests\ManualTests\Microsoft.Data.SqlClient.ManualTesting.Tests.csproj'
- arguments: '-p:Platform=${{parameters.platform }} -p:TestTargetOS="${{parameters.TestTargetOS }}" -p:TargetNetFxVersion=${{parameters.TargetNetFxVersion }} -p:ReferenceType=${{parameters.referenceType }} -p:Configuration=${{parameters.configuration }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.NugetPackageVersion }} --no-build -v n --filter "category!=nonnetfxtests&category!=failing&category!=nonwindowstests" --collect "Code Coverage"'
+ arguments: '-p:Platform=${{parameters.platform }} -p:TestTargetOS="${{parameters.TestTargetOS }}" -p:TargetNetFxVersion=${{parameters.TargetNetFxVersion }} -p:ReferenceType=${{parameters.referenceType }} -p:Configuration=${{parameters.configuration }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }} --no-build -v n --filter "category!=nonnetfxtests&category!=failing&category!=nonwindowstests" --collect "Code Coverage"'
retryCountOnTaskFailure: ${{parameters.retryCountOnManualTests }}
diff --git a/eng/pipelines/common/templates/steps/ci-prebuild-step.yml b/eng/pipelines/common/templates/steps/ci-prebuild-step.yml
index efe17856d8..4eedd5dfd4 100644
--- a/eng/pipelines/common/templates/steps/ci-prebuild-step.yml
+++ b/eng/pipelines/common/templates/steps/ci-prebuild-step.yml
@@ -8,13 +8,8 @@ parameters:
type: boolean
default: false
- - name: artifactName
+ - name: referenceType
type: string
- default: Artifacts
-
- - name: buildType
- displayName: 'Build Type'
- default: Project
values:
- Project
- Package
@@ -37,21 +32,8 @@ steps:
Get-ChildItem env: | Sort-Object Name
displayName: 'List Environment Variables [debug]'
-- ${{if eq(parameters.buildType, 'Package')}}:
- - task: DownloadPipelineArtifact@2
- displayName: 'Download NuGet Package'
- inputs:
- buildType: current
- artifact: ${{parameters.artifactName }}
- patterns: '**/*.nupkg'
- targetPath: $(Pipeline.Workspace)/${{parameters.artifactName }}
-
+- ${{if eq(parameters.referenceType, 'Package')}}:
- template: update-nuget-config-local-feed-step.yml@self
parameters:
- downloadedNugetPath: $(Pipeline.Workspace)\${{parameters.artifactName }}
+ downloadedNugetPath: $(Build.SourcesDirectory)/packages
debug: ${{ parameters.debug }}
-
-- ${{ else }}: # project
- - template: ci-project-build-step.yml@self
- parameters:
- build: allNoDocs
diff --git a/eng/pipelines/common/templates/steps/ci-project-build-step.yml b/eng/pipelines/common/templates/steps/ci-project-build-step.yml
index e938c909fd..f0dbbf2080 100644
--- a/eng/pipelines/common/templates/steps/ci-project-build-step.yml
+++ b/eng/pipelines/common/templates/steps/ci-project-build-step.yml
@@ -12,6 +12,12 @@ parameters:
type: string
default: $(Configuration)
+ - name: referenceType
+ type: string
+ values:
+ - Package
+ - Project
+
- name: buildNumber
type: string
default: $(BuildNumber)
@@ -34,38 +40,43 @@ parameters:
- all
- allNoDocs
+ # Used when MDS is built with ReferenceType = Package.
+ - name: abstractionsPackageVersion
+ type: string
+ default: ''
+
+ # Used when AKV is built with ReferenceType = Package.
+ - name: mdsPackageVersion
+ type: string
+ default: ''
+
steps:
- template: ./ensure-dotnet-version.yml@self
parameters:
packageType: 'sdk'
version: '9.0'
-- template: ./ensure-dotnet-version.yml@self
- parameters:
- packageType: 'runtime'
- version: '8.0'
-
- ${{ if or(eq(parameters.operatingSystem, 'Windows'), eq(parameters.operatingSystem, 'deferedToRuntime')) }}:
- ${{ if or(eq(parameters.build, 'MDS'), eq(parameters.build, 'all'), eq(parameters.build, 'allNoDocs')) }}:
- task: MSBuild@1
- displayName: 'Restore nugets [Win]'
+ displayName: 'Restore [Win]'
condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
inputs:
solution: build.proj
msbuildArchitecture: x64
- msbuildArguments: '-t:restore'
+ msbuildArguments: '-t:restore -p:ReferenceType=${{ parameters.ReferenceType }} -p:AbstractionsPackageVersion=${{parameters.abstractionsPackageVersion}}'
retryCountOnTaskFailure: 1
- ${{ if eq(parameters.build, 'allNoDocs') }}:
- task: MSBuild@1
- displayName: 'Build Driver [Win]'
+ displayName: 'Build Driver (no docs) [Win]'
condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
inputs:
solution: build.proj
msbuildArchitecture: x64
platform: '${{ parameters.platform }}'
configuration: '${{ parameters.configuration }}'
- msbuildArguments: '-t:BuildAllConfigurations -p:GenerateDocumentationFile=false -p:GenerateNuGet=false -p:BuildNumber=${{ parameters.buildNumber }}'
+ msbuildArguments: '-t:BuildAllConfigurations -p:ReferenceType=${{ parameters.ReferenceType }} -p:GenerateDocumentationFile=false -p:GenerateNuGet=false -p:BuildNumber=${{ parameters.buildNumber }} -p:AbstractionsPackageVersion=${{parameters.abstractionsPackageVersion}}'
clean: true
- ${{ if or(eq(parameters.build, 'MDS'), eq(parameters.build, 'all')) }}:
@@ -77,7 +88,7 @@ steps:
msbuildArchitecture: x64
platform: '${{ parameters.platform }}'
configuration: '${{ parameters.configuration }}'
- msbuildArguments: '-t:BuildAllConfigurations -p:GenerateNuGet=false -p:BuildNumber=${{ parameters.buildNumber }}'
+ msbuildArguments: '-t:BuildAllConfigurations -p:ReferenceType=${{ parameters.ReferenceType }} -p:GenerateNuGet=false -p:BuildNumber=${{ parameters.buildNumber }} -p:AbstractionsPackageVersion=${{parameters.abstractionsPackageVersion}}'
clean: true
- ${{ if or(eq(parameters.build, 'AKV'), eq(parameters.build, 'all'), eq(parameters.build, 'allNoDocs')) }}:
@@ -89,7 +100,7 @@ steps:
msbuildArchitecture: x64
platform: '${{ parameters.platform }}'
configuration: '${{ parameters.configuration }}'
- msbuildArguments: '-t:BuildAKVNetFx -p:BuildNumber=${{ parameters.buildNumber }}'
+ msbuildArguments: '-t:BuildAKVNetFx -p:ReferenceType=${{ parameters.ReferenceType }} -p:BuildNumber=${{ parameters.buildNumber }} -p:MdsPackageVersion=${{parameters.mdsPackageVersion}}'
- task: MSBuild@1
displayName: 'Build AKV Provider NetCore All OS [Win]'
@@ -99,17 +110,17 @@ steps:
msbuildArchitecture: x64
platform: '${{ parameters.platform }}'
configuration: '${{ parameters.configuration }}'
- msbuildArguments: '-t:BuildAKVNetCoreAllOS -p:BuildNumber=${{ parameters.buildNumber }}'
+ msbuildArguments: '-t:BuildAKVNetCoreAllOS -p:ReferenceType=${{ parameters.ReferenceType }} -p:BuildNumber=${{ parameters.buildNumber }} -p:MdsPackageVersion=${{parameters.mdsPackageVersion}}'
- ${{ if or(eq(parameters.operatingSystem, 'Linux'), eq(parameters.operatingSystem, 'MacOS'), eq(parameters.operatingSystem, 'deferedToRuntime')) }}:
- task: DotNetCoreCLI@2
- displayName: 'Build Driver [non-Win]'
+ displayName: 'Build Driver [${{ parameters.operatingSystem }}]'
condition: and(succeeded(), ne(variables['Agent.OS'], 'Windows_NT'))
inputs:
command: custom
projects: build.proj
custom: msbuild
- arguments: '-t:BuildAll -p:TestEnabled=true -p:GenerateDocumentationFile=false -p:configuration=${{ parameters.configuration }}'
+ arguments: '-t:BuildAll -p:ReferenceType=${{ parameters.ReferenceType }} -p:TestEnabled=true -p:GenerateDocumentationFile=false -p:configuration=${{ parameters.configuration }} -p:AbstractionsPackageVersion=${{parameters.abstractionsPackageVersion}}'
verbosityRestore: Detailed
verbosityPack: Detailed
retryCountOnTaskFailure: 1
diff --git a/eng/pipelines/common/templates/steps/copy-dlls-for-test-step.yml b/eng/pipelines/common/templates/steps/copy-dlls-for-test-step.yml
index 098286866c..23347ac364 100644
--- a/eng/pipelines/common/templates/steps/copy-dlls-for-test-step.yml
+++ b/eng/pipelines/common/templates/steps/copy-dlls-for-test-step.yml
@@ -83,6 +83,6 @@ steps:
$software = '${{parameters.softwareFolder}}'
$symbols = '${{parameters.symbolsFolder}}'
- Get-ChildItem -recurse "$software\*.dll"
- Get-ChildItem -recurse "$symbols\*.pdb"
+ Get-ChildItem -recurse "$software\*.dll" | ForEach-Object VersionInfo | Format-List
+ Get-ChildItem -recurse "$symbols\*.pdb" | ForEach-Object VersionInfo | Format-List
displayName: 'List the prepared files'
diff --git a/eng/pipelines/common/templates/steps/generate-nuget-package-step.yml b/eng/pipelines/common/templates/steps/generate-nuget-package-step.yml
index 8a8fd00f6f..80a085c502 100644
--- a/eng/pipelines/common/templates/steps/generate-nuget-package-step.yml
+++ b/eng/pipelines/common/templates/steps/generate-nuget-package-step.yml
@@ -6,17 +6,15 @@
parameters:
- name: nuspecPath
type: string
- default: '$(nuspecPath)'
- - name: NugetPackageVersion
+ - name: packageVersion
type: string
- default: '$(NugetPackageVersion)'
- - name: OutputDirectory
+ - name: outputDirectory
type: string
default: '$(Build.SourcesDirectory)/packages'
- - name: Configuration
+ - name: configuration
type: string
default: '$(Configuration)'
@@ -26,12 +24,17 @@ parameters:
- name: displayName
type: string
- default: 'NuGet pack with snupkg'
- name: installNuget
type: boolean
default: true
+ - name: referenceType
+ type: string
+ values:
+ - Package
+ - Project
+
# Semi-colon separated properties to pass to nuget via the -properties
# argument.
- name: properties
@@ -55,6 +58,6 @@ steps:
inputs:
command: custom
${{ if parameters.generateSymbolsPackage }}:
- arguments: 'pack -Symbols -SymbolPackageFormat snupkg ${{parameters.nuspecPath}} -Version ${{parameters.NugetPackageVersion}} -OutputDirectory ${{parameters.OutputDirectory}} -properties "COMMITID=$(CommitHead);Configuration=${{parameters.Configuration}};${{parameters.properties}}"'
+ arguments: 'pack -Symbols -SymbolPackageFormat snupkg ${{parameters.nuspecPath}} -Version ${{parameters.packageVersion}} -OutputDirectory ${{parameters.outputDirectory}} -properties "COMMITID=$(CommitHead);Configuration=${{parameters.Configuration}};ReferenceType=${{ parameters.referenceType }};${{parameters.properties}}"'
${{else }}:
- arguments: 'pack ${{parameters.nuspecPath}} -Version ${{parameters.NugetPackageVersion}} -OutputDirectory ${{parameters.OutputDirectory}} -properties "COMMITID=$(CommitHead);Configuration=${{parameters.Configuration}};${{parameters.properties}}"'
+ arguments: 'pack ${{parameters.nuspecPath}} -Version ${{parameters.packageVersion}} -OutputDirectory ${{parameters.outputDirectory}} -properties "COMMITID=$(CommitHead);Configuration=${{parameters.Configuration}};ReferenceType=${{ parameters.referenceType }};${{parameters.properties}}"'
diff --git a/eng/pipelines/common/templates/steps/publish-symbols-step.yml b/eng/pipelines/common/templates/steps/publish-symbols-step.yml
index 5f8d2e6a7d..8999a6cc1d 100644
--- a/eng/pipelines/common/templates/steps/publish-symbols-step.yml
+++ b/eng/pipelines/common/templates/steps/publish-symbols-step.yml
@@ -15,7 +15,7 @@ parameters:
- name: symbolsVersion
type: string
- default: '$(NuGetPackageVersion)'
+ default: '$(mdsPackageVersion)'
- name: symbolServer
type: string
diff --git a/eng/pipelines/common/templates/steps/run-all-tests-step.yml b/eng/pipelines/common/templates/steps/run-all-tests-step.yml
index b9a870ada4..27da9e4e73 100644
--- a/eng/pipelines/common/templates/steps/run-all-tests-step.yml
+++ b/eng/pipelines/common/templates/steps/run-all-tests-step.yml
@@ -11,9 +11,9 @@ parameters:
- name: targetFramework
type: string
- - name: nugetPackageVersion
+ - name: mdsPackageVersion
type: string
- default: $(NugetPackageVersion)
+ default: $(mdsPackageVersion)
- name: platform
type: string
@@ -62,9 +62,9 @@ steps:
platform: '${{parameters.platform }}'
configuration: '${{parameters.configuration }}'
${{ if eq(parameters.msbuildArchitecture, 'x64') }}:
- msbuildArguments: '-t:RunUnitTests -p:TF=${{parameters.targetFramework }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }}'
+ msbuildArguments: '-t:RunUnitTests -p:TF=${{parameters.targetFramework }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }}'
${{ else }}: # x86
- msbuildArguments: '-t:RunUnitTests -p:TF=${{parameters.targetFramework }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }} -p:DotnetPath=${{parameters.dotnetx86RootPath }}'
+ msbuildArguments: '-t:RunUnitTests -p:TF=${{parameters.targetFramework }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }} -p:DotnetPath=${{parameters.dotnetx86RootPath }}'
condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
retryCountOnTaskFailure: 1
@@ -76,9 +76,9 @@ steps:
platform: '${{parameters.platform }}'
configuration: '${{parameters.configuration }}'
${{ if eq(parameters.msbuildArchitecture, 'x64') }}:
- msbuildArguments: '-t:RunFunctionalTests -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }}'
+ msbuildArguments: '-t:RunFunctionalTests -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }}'
${{ else }}: # x86
- msbuildArguments: '-t:RunFunctionalTests -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }} -p:DotnetPath=${{parameters.dotnetx86RootPath }}'
+ msbuildArguments: '-t:RunFunctionalTests -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }} -p:DotnetPath=${{parameters.dotnetx86RootPath }}'
condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
retryCountOnTaskFailure: 1
@@ -90,9 +90,9 @@ steps:
platform: '${{parameters.platform }}'
configuration: '${{parameters.configuration }}'
${{ if eq(parameters.msbuildArchitecture, 'x64') }}:
- msbuildArguments: '-t:RunManualTests -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }}'
+ msbuildArguments: '-t:RunManualTests -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }}'
${{ else }}: # x86
- msbuildArguments: '-t:RunManualTests -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }} -p:DotnetPath=${{parameters.dotnetx86RootPath }}'
+ msbuildArguments: '-t:RunManualTests -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }} -p:DotnetPath=${{parameters.dotnetx86RootPath }}'
condition: eq(variables['Agent.OS'], 'Windows_NT')
retryCountOnTaskFailure: 2
@@ -104,7 +104,7 @@ steps:
command: custom
projects: build.proj
custom: msbuild
- arguments: '-t:RunUnitTests -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }} -p:platform=${{parameters.platform }} -p:Configuration=${{parameters.configuration }}'
+ arguments: '-t:RunUnitTests -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }} -p:platform=${{parameters.platform }} -p:Configuration=${{parameters.configuration }}'
verbosityRestore: Detailed
verbosityPack: Detailed
retryCountOnTaskFailure: 1
@@ -116,7 +116,7 @@ steps:
command: custom
projects: build.proj
custom: msbuild
- arguments: '-t:RunFunctionalTests -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }} -p:platform=${{parameters.platform }} -p:Configuration=${{parameters.configuration }}'
+ arguments: '-t:RunFunctionalTests -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }} -p:platform=${{parameters.platform }} -p:Configuration=${{parameters.configuration }}'
verbosityRestore: Detailed
verbosityPack: Detailed
retryCountOnTaskFailure: 1
@@ -128,7 +128,7 @@ steps:
command: custom
projects: build.proj
custom: msbuild
- arguments: '-t:RunManualTests -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }} -p:platform=${{parameters.platform }} -p:Configuration=${{parameters.configuration }}'
+ arguments: '-t:RunManualTests -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.mdsPackageVersion }} -p:platform=${{parameters.platform }} -p:Configuration=${{parameters.configuration }}'
verbosityRestore: Detailed
verbosityPack: Detailed
retryCountOnTaskFailure: 2
diff --git a/eng/pipelines/common/templates/steps/update-nuget-config-local-feed-step.yml b/eng/pipelines/common/templates/steps/update-nuget-config-local-feed-step.yml
index 4eac341108..f7bf252ebe 100644
--- a/eng/pipelines/common/templates/steps/update-nuget-config-local-feed-step.yml
+++ b/eng/pipelines/common/templates/steps/update-nuget-config-local-feed-step.yml
@@ -11,10 +11,6 @@ parameters:
- name: downloadedNugetPath # path to the downloaded nuget files
type: string
- - name: nugetPackageVersion
- type: string
- default: $(NugetPackageVersion)
-
steps:
- powershell: |
# Get a list of package sources available
@@ -34,7 +30,7 @@ steps:
[Xml] $nugetConfig = Get-Content -Path "NuGet.config"
$Value = Resolve-Path ${{parameters.downloadedNugetPath }}
$newAdd = $nugetConfig.CreateElement("add")
- $newAdd.SetAttribute("key","Package source")
+ $newAdd.SetAttribute("key","pipeline")
$newAdd.SetAttribute("value", "$Value/" )
$nugetConfig.configuration.packageSources.AppendChild($newAdd)
$nugetConfig.Save("$rootFolder/NuGet.config")
@@ -45,39 +41,3 @@ steps:
# Display the content of the NuGet.config file
Get-Content -Path "NuGet.config"
displayName: 'Read NuGet.config [debug]'
-
-- task: DotNetCoreCLI@2
- displayName: 'Restore NuGets'
- inputs:
- command: 'custom'
- custom: 'msbuild'
- arguments: 'build.proj -t:restore'
- feedsToUse: 'select'
-
-- powershell: |
- $Doc = [xml](Get-Content "./Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider.csproj")
- $parent_xpath = '/Project/ItemGroup/ProjectReference'
- $node = $Doc.SelectSingleNode($parent_xpath)
- $parentNode = $node.ParentNode
- while($node -ne $null) {
- $node.ParentNode.RemoveChild($node)
- $node = $Doc.SelectSingleNode($parent_xpath)
- }
-
- $parent_xpath = '/Project/ItemGroup/PackageReference[@Include="Microsoft.Data.SqlClient"]'
- $node = $Doc.SelectSingleNode($parent_xpath)
-
- if($node -eq $null){
- $packagerefnode = $doc.createelement("packagereference")
- $value = $doc.selectsinglenode('/project/itemgroup/projectreference')
- $attrinclude = $doc.createattribute("include")
- $attrinclude.value = "microsoft.data.sqlclient"
- $packagerefnode.attributes.append($attrinclude)
- $parentNode.AppendChild($packageRefNode)
- }
-
- $currentFolder = Get-Location
- $filePath = Join-Path $currentFolder "Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider.csproj"
- $Doc.Save($filePath)
- workingDirectory: 'src/Microsoft.Data.SqlClient/add-ons/AzureKeyVaultProvider'
- displayName: 'Update AKV Project Ref to Package Ref (.NET Framework/Core)'
diff --git a/eng/pipelines/dotnet-sqlclient-ci-core.yml b/eng/pipelines/dotnet-sqlclient-ci-core.yml
index 353122828b..86987f63e2 100644
--- a/eng/pipelines/dotnet-sqlclient-ci-core.yml
+++ b/eng/pipelines/dotnet-sqlclient-ci-core.yml
@@ -58,9 +58,12 @@ parameters:
type: object
default: [net462, net8.0]
-- name: buildType
- displayName: 'Build Type'
- default: Project
+# The way we will reference sibling projects in the .csproj files:
+# Project - use references.
+# Package - use references to NuGet packages in the
+# packages/ directory.
+- name: referenceType
+ displayName: 'Reference Type'
values:
- Project
- Package
@@ -89,20 +92,48 @@ parameters:
variables:
- template: libraries/ci-build-variables.yml@self
- - name: artifactName
- value: Artifacts
+ - name: abstractionsArtifactName
+ value: Abstractions.Artifact
+
+ - name: mdsArtifactName
+ value: MDS.Artifact
- name: defaultHostedPoolName
value: 'Azure Pipelines'
stages:
- - stage: build_nugets
- displayName: 'Build NuGet Packages'
+
+ # Build the Abstractions package, and publish it to the pipeline artifacts
+ # under the given artifact name.
+ - template: stages/build-abstractions-package-ci-stage.yml@self
+ parameters:
+ buildConfiguration: Release
+ abstractionsPackageVersion: $(abstractionsPackageVersion)
+ artifactName: $(abstractionsArtifactName)
+ ${{if eq(parameters.debug, 'true')}}:
+ verbosity: diagnostic
+
+ # Build MDS and its NuGet packages.
+ - stage: build_mds_akv_packages_stage
+ displayName: 'Build MDS & AKV Packages'
+
+ # When building MDS via packages, we must depend on the Abstractions
+ # package.
+ ${{ if eq(parameters.referenceType, 'Package') }}:
+ dependsOn:
+ - build_abstractions_package_stage
+ ${{ else }}:
+ dependsOn: []
+
jobs:
- template: common/templates/jobs/ci-build-nugets-job.yml@self
parameters:
+ referenceType: ${{ parameters.referenceType }}
configuration: ${{ parameters.buildConfiguration }}
- artifactName: $(artifactName)
+ abstractionsPackageVersion: $(abstractionsPackageVersion)
+ abstractionsArtifactName: $(abstractionsArtifactName)
+ mdsPackageVersion: $(mdsPackageVersion)
+ mdsArtifactName: $(mdsArtifactName)
${{if ne(parameters.SNIVersion, '')}}:
prebuildSteps:
- template: common/templates/steps/override-sni-version.yml@self
@@ -110,44 +141,48 @@ stages:
SNIVersion: ${{parameters.SNIVersion}}
SNIValidationFeed: ${{parameters.SNIValidationFeed}}
+ # Run the stress tests, if desired.
- ${{ if eq(parameters.enableStressTests, true) }}:
- template: stages/stress-tests-ci-stage.yml@self
parameters:
buildConfiguration: ${{ parameters.buildConfiguration }}
- dependsOn: [build_nugets]
+ dependsOn: [build_mds_akv_packages_stage]
pipelineArtifactName: $(artifactName)
- mdsPackageVersion: $(NugetPackageVersion)
+ mdsPackageVersion: $(mdsPackageVersion)
${{ if eq(parameters.debug, 'true') }}:
verbosity: 'detailed'
-
+
+ # Run the MDS and AKV tests.
- template: common/templates/stages/ci-run-tests-stage.yml@self
parameters:
debug: ${{ parameters.debug }}
- buildType: ${{ parameters.buildType }}
+ referenceType: ${{ parameters.referenceType }}
testsTimeout: ${{ parameters.testsTimeout }}
- ${{ if eq(parameters.buildType, 'Package') }}:
- dependsOn: build_nugets
-
- ${{if ne(parameters.SNIVersion, '')}}:
- prebuildSteps: # steps to run prior to building and running tests on each job
+ abstractionsArtifactName: $(abstractionsArtifactName)
+ abstractionsPackageVersion: $(abstractionsPackageVersion)
+ mdsArtifactName: $(mdsArtifactName)
+ mdsPackageVersion: $(mdsPackageVersion)
+
+ # When testing MDS via packages, we must depend on the Abstractions and
+ # MDS packages.
+ ${{ if eq(parameters.referenceType, 'Package') }}:
+ dependsOn:
+ - build_abstractions_package_stage
+ - build_mds_akv_packages_stage
+
+ prebuildSteps: # steps to run prior to building and running tests on each job
+ - ${{if ne(parameters.SNIVersion, '')}}:
- template: common/templates/steps/override-sni-version.yml@self
parameters:
SNIVersion: ${{parameters.SNIVersion}}
SNIValidationFeed: ${{parameters.SNIValidationFeed}}
- - template: common/templates/steps/ci-prebuild-step.yml@self
- parameters:
- debug: ${{ parameters.debug }}
- artifactName: $(artifactName)
- buildType: ${{ parameters.buildType }}
- ${{else}}:
- prebuildSteps: # steps to run prior to building and running tests on each job
- - template: common/templates/steps/ci-prebuild-step.yml@self
- parameters:
- debug: ${{ parameters.debug }}
- artifactName: $(artifactName)
- buildType: ${{ parameters.buildType }}
- ${{ if eq(parameters.buildType, 'Project') }}: # only run the code coverage job if the build type is project
+ - template: common/templates/steps/ci-prebuild-step.yml@self
+ parameters:
+ debug: ${{ parameters.debug }}
+ referenceType: ${{ parameters.referenceType }}
+
+ ${{ if eq(parameters.referenceType, 'Project') }}: # only run the code coverage job if the build type is project
postTestJobs: # jobs to run after the tests are done
- template: common/templates/jobs/ci-code-coverage-job.yml@self
parameters:
@@ -354,9 +389,8 @@ stages:
# ways to detect if they were present) won't run consistently across forks and non-forks.
${{ if eq(variables['system.pullRequest.isFork'], 'False') }}:
AADPasswordConnectionString: $(AAD_PASSWORD_CONN_STR)
- AADServicePrincipalId: $(AADServicePrincipalId)
- ${{ if eq(variables['system.pullRequest.isFork'], 'False') }}:
AADServicePrincipalSecret: $(AADServicePrincipalSecret)
+ AADServicePrincipalId: $(AADServicePrincipalId)
AzureKeyVaultUrl: $(AzureKeyVaultUrl)
AzureKeyVaultTenantId: $(AzureKeyVaultTenantId)
SupportsIntegratedSecurity: false
@@ -383,9 +417,8 @@ stages:
AADAuthorityURL: $(AADAuthorityURL)
${{ if eq(variables['system.pullRequest.isFork'], 'False') }}:
AADPasswordConnectionString: $(AAD_PASSWORD_CONN_STR_eastus)
- AADServicePrincipalId: $(AADServicePrincipalId)
- ${{ if eq(variables['system.pullRequest.isFork'], 'False') }}:
AADServicePrincipalSecret: $(AADServicePrincipalSecret)
+ AADServicePrincipalId: $(AADServicePrincipalId)
AzureKeyVaultUrl: $(AzureKeyVaultUrl)
AzureKeyVaultTenantId: $(AzureKeyVaultTenantId)
SupportsIntegratedSecurity: false
@@ -393,37 +426,6 @@ stages:
LocalDbAppName: $(LocalDbAppName)
LocalDbSharedInstanceName: $(LocalDbSharedInstanceName)
- ${{ if eq(variables['system.pullRequest.isFork'], 'False') }}: # only run enclave jobs if the password is available
- windows_enclave_sql:
- pool: ADO-CI-AE-1ES-Pool
- images:
- Win22_Enclave_Sql19: ADO-MMS22-SQL19
- TargetFrameworks: ${{parameters.targetFrameworks }}
- netcoreVersionTestUtils: ${{parameters.netcoreVersionTestUtils }}
- buildPlatforms: ${{parameters.buildPlatforms }}
- testSets: [AE]
- useManagedSNI: ${{parameters.useManagedSNI }}
- codeCovTargetFrameworks: ${{parameters.codeCovTargetFrameworks }}
- configSqlFor: enclave
- operatingSystem: Windows
- configProperties:
- # config.json properties
- TCPConnectionStringHGSVBS: $(SQL_TCP_CONN_STRING_HGSVBS)
- TCPConnectionStringNoneVBS: $(SQL_TCP_CONN_STRING_NoneVBS)
- TCPConnectionStringAASSGX: $(SQL_TCP_CONN_STRING_AASSGX)
- EnclaveEnabled: true
- AADAuthorityURL: $(AADAuthorityURL)
- AADServicePrincipalId: $(AADServicePrincipalId)
- ${{ if eq(variables['system.pullRequest.isFork'], 'False') }}:
- AADServicePrincipalSecret: $(AADServicePrincipalSecret)
- AzureKeyVaultUrl: $(AzureKeyVaultUrl)
- AzureKeyVaultTenantId: $(AzureKeyVaultTenantId)
- SupportsIntegratedSecurity: $(SupportsIntegratedSecurity)
- UserManagedIdentityClientId: $(UserManagedIdentityClientId)
- AliasName: $(SQLAliasName)
- LocalDbAppName: $(LocalDbAppName)
- LocalDbSharedInstanceName: $(LocalDbSharedInstanceName)
-
# self hosted SQL Server on Linux
linux_sql_19_22:
pool: ${{parameters.defaultPoolName }}
@@ -469,9 +471,8 @@ stages:
AADAuthorityURL: $(AADAuthorityURL)
${{ if eq(variables['system.pullRequest.isFork'], 'False') }}:
AADPasswordConnectionString: $(AAD_PASSWORD_CONN_STR)
- AADServicePrincipalId: $(AADServicePrincipalId)
- ${{ if eq(variables['system.pullRequest.isFork'], 'False') }}:
AADServicePrincipalSecret: $(AADServicePrincipalSecret)
+ AADServicePrincipalId: $(AADServicePrincipalId)
AzureKeyVaultUrl: $(AzureKeyVaultUrl)
AzureKeyVaultTenantId: $(AzureKeyVaultTenantId)
SupportsIntegratedSecurity: false
@@ -479,7 +480,65 @@ stages:
LocalDbAppName: $(LocalDbAppName)
LocalDbSharedInstanceName: $(LocalDbSharedInstanceName)
- ${{ if eq(variables['system.pullRequest.isFork'], 'False') }}: # only run enclave jobs if the password is available
+ # Self hosted SQL Server on Mac
+ mac_sql_22:
+ pool: $(defaultHostedPoolName)
+ hostedPool: true
+ images:
+ MacOSLatest_Sql22: macos-latest
+ TargetFrameworks: ${{parameters.targetFrameworksLinux }}
+ netcoreVersionTestUtils: ${{parameters.netcoreVersionTestUtils }}
+ buildPlatforms: [AnyCPU]
+ testSets: ${{parameters.testSets }}
+ useManagedSNI: [true]
+ codeCovTargetFrameworks: ${{parameters.codeCovTargetFrameworks }}
+ configSqlFor: local
+ operatingSystem: Mac
+ configProperties:
+ # config.json properties
+ TCPConnectionString: $(SQL_TCP_CONN_STRING)
+ NPConnectionString: $(SQL_NP_CONN_STRING)
+ SupportsIntegratedSecurity: false
+ ManagedIdentitySupported: false
+ LocalDbAppName: $(LocalDbAppName)
+ LocalDbSharedInstanceName: $(LocalDbSharedInstanceName)
+
+ # Enclave tests
+ #
+ # Only run enclave jobs if the password is available, which it won't be
+ # for forked PRs.
+ #
+ ${{ if eq(variables['system.pullRequest.isFork'], 'False') }}:
+ windows_enclave_sql:
+ pool: ADO-CI-AE-1ES-Pool
+ images:
+ Win22_Enclave_Sql19: ADO-MMS22-SQL19
+ TargetFrameworks: ${{parameters.targetFrameworks }}
+ netcoreVersionTestUtils: ${{parameters.netcoreVersionTestUtils }}
+ buildPlatforms: ${{parameters.buildPlatforms }}
+ testSets: [AE]
+ useManagedSNI: ${{parameters.useManagedSNI }}
+ codeCovTargetFrameworks: ${{parameters.codeCovTargetFrameworks }}
+ configSqlFor: enclave
+ operatingSystem: Windows
+ configProperties:
+ # config.json properties
+ TCPConnectionStringHGSVBS: $(SQL_TCP_CONN_STRING_HGSVBS)
+ TCPConnectionStringNoneVBS: $(SQL_TCP_CONN_STRING_NoneVBS)
+ TCPConnectionStringAASSGX: $(SQL_TCP_CONN_STRING_AASSGX)
+ EnclaveEnabled: true
+ AADAuthorityURL: $(AADAuthorityURL)
+ AADServicePrincipalId: $(AADServicePrincipalId)
+ ${{ if eq(variables['system.pullRequest.isFork'], 'False') }}:
+ AADServicePrincipalSecret: $(AADServicePrincipalSecret)
+ AzureKeyVaultUrl: $(AzureKeyVaultUrl)
+ AzureKeyVaultTenantId: $(AzureKeyVaultTenantId)
+ SupportsIntegratedSecurity: $(SupportsIntegratedSecurity)
+ UserManagedIdentityClientId: $(UserManagedIdentityClientId)
+ AliasName: $(SQLAliasName)
+ LocalDbAppName: $(LocalDbAppName)
+ LocalDbSharedInstanceName: $(LocalDbSharedInstanceName)
+
linux_enclave_sql:
pool: ADO-CI-AE-1ES-Pool
images:
@@ -507,26 +566,3 @@ stages:
UserManagedIdentityClientId: $(UserManagedIdentityClientId)
LocalDbAppName: $(LocalDbAppName)
LocalDbSharedInstanceName: $(LocalDbSharedInstanceName)
-
- # Self hosted SQL Server on Mac
- mac_sql_22:
- pool: $(defaultHostedPoolName)
- hostedPool: true
- images:
- MacOSLatest_Sql22: macos-latest
- TargetFrameworks: ${{parameters.targetFrameworksLinux }}
- netcoreVersionTestUtils: ${{parameters.netcoreVersionTestUtils }}
- buildPlatforms: [AnyCPU]
- testSets: ${{parameters.testSets }}
- useManagedSNI: [true]
- codeCovTargetFrameworks: ${{parameters.codeCovTargetFrameworks }}
- configSqlFor: local
- operatingSystem: Mac
- configProperties:
- # config.json properties
- TCPConnectionString: $(SQL_TCP_CONN_STRING)
- NPConnectionString: $(SQL_NP_CONN_STRING)
- SupportsIntegratedSecurity: false
- ManagedIdentitySupported: false
- LocalDbAppName: $(LocalDbAppName)
- LocalDbSharedInstanceName: $(LocalDbSharedInstanceName)
diff --git a/eng/pipelines/dotnet-sqlclient-ci-package-reference-pipeline.yml b/eng/pipelines/dotnet-sqlclient-ci-package-reference-pipeline.yml
index 336bd97ab5..0e6ee71697 100644
--- a/eng/pipelines/dotnet-sqlclient-ci-package-reference-pipeline.yml
+++ b/eng/pipelines/dotnet-sqlclient-ci-package-reference-pipeline.yml
@@ -4,37 +4,78 @@
# See the LICENSE file in the project root for more information. #
#################################################################################
+# Use the day of year and a revision number for the build name. This is what
+# appears in the Azure DevOps UI.
name: $(DayOfYear)$(Rev:rr)
-trigger:
- batch: true
+
+# Trigger PR validation runs for all pushes to PRs that target the specified
+# branches.
+#
+# https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/github?view=azure-devops&tabs=yaml#pr-triggers
+#
+pr:
branches:
include:
+ # GitHub repo branch targets that will trigger PR validation builds.
+ - dev/*
+ - feat/*
- main
- - internal/main
+
paths:
include:
- - src\Microsoft.Data.SqlClient\netcore\ref
- - src\Microsoft.Data.SqlClient\netfx\ref
- - src\Microsoft.Data.SqlClient\ref
+ - .azuredevops
+ - .config
+ - src
- eng
- tools
- - .config
- - Nuget.config
+ - azurepipelines-coverage.yml
+ - build.proj
+ - NuGet.config
-schedules:
-- cron: '0 4 * * Fri'
- displayName: Weekly Thursday 9:00 PM (UTC - 7) Build
+# Trigger batched CI runs on pushes to the specified branches.
+#
+# https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/github?view=azure-devops&tabs=yaml#ci-triggers
+#
+trigger:
+ batch: true
branches:
include:
+ # GitHub repo branch targets that will trigger CI builds.
+ - feat/*
+ - main
+
+ # ADO repo branch targets that will trigger CI builds.
- internal/main
- always: true
-- cron: '0 0 * * Mon-Fri'
- displayName: Daily build 5:00 PM (UTC - 7) Build
- branches:
+ paths:
include:
- - main
- always: true
+ - .azuredevops
+ - .config
+ - src
+ - eng
+ - tools
+ - azurepipelines-coverage.yml
+ - build.proj
+ - NuGet.config
+
+# Schedule periodic CI runs for the main branches.
+schedules:
+
+ # ADO internal/main
+ - cron: '0 4 * * Fri'
+ displayName: Weekly Thursday 9:00 PM (UTC - 7) Build
+ branches:
+ include:
+ - internal/main
+ always: true
+
+ # GitHub main
+ - cron: '0 0 * * Mon-Fri'
+ displayName: Daily build 5:00 PM (UTC - 7) Build
+ branches:
+ include:
+ - main
+ always: true
parameters: # parameters are shown up in ADO UI in a build queue time
- name: 'debug'
@@ -74,13 +115,6 @@ parameters: # parameters are shown up in ADO UI in a build queue time
type: object
default: [net462, net8.0]
-- name: buildType
- displayName: 'Build Type'
- default: Package
- values:
- - Project
- - Package
-
- name: buildConfiguration
displayName: 'Build Configuration'
default: Release
@@ -109,7 +143,7 @@ extends:
testSets: ${{ parameters.testSets }}
useManagedSNI: ${{ parameters.useManagedSNI }}
codeCovTargetFrameworks: ${{ parameters.codeCovTargetFrameworks }}
- buildType: ${{ parameters.buildType }}
+ referenceType: Package
buildConfiguration: ${{ parameters.buildConfiguration }}
enableStressTests: ${{ parameters.enableStressTests }}
testsTimeout: ${{ parameters.testsTimeout }}
diff --git a/eng/pipelines/dotnet-sqlclient-ci-project-reference-pipeline.yml b/eng/pipelines/dotnet-sqlclient-ci-project-reference-pipeline.yml
index 38325d38ca..e63fefdf3d 100644
--- a/eng/pipelines/dotnet-sqlclient-ci-project-reference-pipeline.yml
+++ b/eng/pipelines/dotnet-sqlclient-ci-project-reference-pipeline.yml
@@ -4,29 +4,78 @@
# See the LICENSE file in the project root for more information. #
#################################################################################
+# Use the day of year and a revision number for the build name. This is what
+# appears in the Azure DevOps UI.
name: $(DayOfYear)$(Rev:rr)
+
+# Trigger PR validation runs for all pushes to PRs that target the specified
+# branches.
+#
+# https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/github?view=azure-devops&tabs=yaml#pr-triggers
+#
+pr:
+ branches:
+ include:
+ # GitHub repo branch targets that will trigger PR validation builds.
+ - dev/*
+ - feat/*
+ - main
+
+ paths:
+ include:
+ - .azuredevops
+ - .config
+ - src
+ - eng
+ - tools
+ - azurepipelines-coverage.yml
+ - build.proj
+ - NuGet.config
+
+# Trigger batched CI runs on pushes to the specified branches.
+#
+# https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/github?view=azure-devops&tabs=yaml#ci-triggers
+#
trigger:
batch: true
branches:
include:
+ # GitHub repo branch targets that will trigger CI builds.
+ - feat/*
- main
+
+ # ADO repo branch targets that will trigger CI builds.
- internal/main
+
paths:
include:
+ - .azuredevops
+ - .config
- src
- eng
- tools
- - .config
+ - azurepipelines-coverage.yml
- build.proj
- - Nuget.config
+ - NuGet.config
+# Schedule periodic CI runs for the main branches.
schedules:
-- cron: '0 5 * * Thu'
- displayName: Weekly Wednesday 10:00 PM (UTC - 7) Build
- branches:
- include:
- - internal/main
- always: true
+
+ # ADO internal/main
+ - cron: '0 4 * * Fri'
+ displayName: Weekly Thursday 9:00 PM (UTC - 7) Build
+ branches:
+ include:
+ - internal/main
+ always: true
+
+ # GitHub main
+ - cron: '0 0 * * Mon-Fri'
+ displayName: Daily build 5:00 PM (UTC - 7) Build
+ branches:
+ include:
+ - main
+ always: true
parameters: # parameters are shown up in ADO UI in a build queue time
- name: 'debug'
@@ -66,13 +115,6 @@ parameters: # parameters are shown up in ADO UI in a build queue time
type: object
default: [net462, net8.0]
-- name: buildType
- displayName: 'Build Type'
- default: Project
- values:
- - Project
- - Package
-
- name: buildConfiguration
displayName: 'Build Configuration'
default: Release
@@ -101,7 +143,7 @@ extends:
testSets: ${{ parameters.testSets }}
useManagedSNI: ${{ parameters.useManagedSNI }}
codeCovTargetFrameworks: ${{ parameters.codeCovTargetFrameworks }}
- buildType: ${{ parameters.buildType }}
+ referenceType: Project
buildConfiguration: ${{ parameters.buildConfiguration }}
enableStressTests: ${{ parameters.enableStressTests }}
testsTimeout: ${{ parameters.testsTimeout }}
diff --git a/eng/pipelines/dotnet-sqlclient-signing-pipeline.yml b/eng/pipelines/dotnet-sqlclient-signing-pipeline.yml
index b494a87426..a3233d6f68 100644
--- a/eng/pipelines/dotnet-sqlclient-signing-pipeline.yml
+++ b/eng/pipelines/dotnet-sqlclient-signing-pipeline.yml
@@ -8,17 +8,20 @@ name: $(Year:YY)$(DayOfYear)$(Rev:.r)
trigger:
branches:
include:
+
+ # This pipeline is intended to only run against the ADO dotnet-sqlclient
+ # repo.
- internal/main
paths:
include:
+ - .azuredevops
+ - .config
- src
- eng
- tools
- - .config
+ - azurepipelines-coverage.yml
- build.proj
- - Nuget.config
- - '*.cmd'
- - '*.sh'
+ - NuGet.config
schedules:
- cron: '30 4 * * Mon'
@@ -107,14 +110,14 @@ extends:
softwareFolder: $(softwareFolder)
symbolsFolder: $(symbolsFolder)
softwarename: Microsoft.Data.SqlClient
- versionNumber: $(AssemblyFileVersion)
+ versionNumber: $(mdsAssemblyFileVersion)
codeql:
compiled:
enabled: ${{ not(parameters['isPreview']) }}
sbom:
enabled: ${{ not(parameters['isPreview']) }}
packageName: Microsoft.Data.SqlClient
- packageVersion: $(NugetPackageVersion)
+ packageVersion: $(mdsPackageVersion)
policheck:
enabled: ${{ not(parameters['isPreview']) }}
break: true # always break the build on policheck issues. You can disable it by setting to 'false'
diff --git a/eng/pipelines/jobs/build-akv-official-job.yml b/eng/pipelines/jobs/build-akv-official-job.yml
index a4374b773b..ca89dac324 100644
--- a/eng/pipelines/jobs/build-akv-official-job.yml
+++ b/eng/pipelines/jobs/build-akv-official-job.yml
@@ -5,6 +5,9 @@
#################################################################################
parameters:
+ - name: akvPackageVersion
+ type: string
+
- name: apiScanDllPath
type: string
@@ -17,9 +20,6 @@ parameters:
- name: buildConfiguration
type: string
- - name: nugetPackageVersion
- type: string
-
- name: mdsPackageVersion
type: string
@@ -90,7 +90,7 @@ jobs:
parameters:
assemblyFileVersion: '${{ parameters.assemblyFileVersion }}'
buildConfiguration: '${{ parameters.buildConfiguration }}'
- mdsPackageVersion: '${{ parameters.mdsPackageVersion }}'
+ akvPackageVersion: '${{ parameters.akvPackageVersion }}'
- ${{ each targetFramework in parameters.targetFrameworks }}:
- template: ../steps/compound-extract-akv-apiscan-files-step.yml
@@ -104,7 +104,7 @@ jobs:
- template: ../steps/roslyn-analyzers-akv-step.yml@self
parameters:
buildConfiguration: '${{ parameters.buildConfiguration }}'
- mdsPackageVersion: '${{ parameters.mdsPackageVersion }}'
+ akvPackageVersion: '${{ parameters.akvPackageVersion }}'
- template: ../steps/compound-esrp-code-signing-step.yml@self
parameters:
@@ -120,10 +120,11 @@ jobs:
parameters:
buildConfiguration: '${{ parameters.buildConfiguration }}'
generateSymbolsPackage: true # Always generate symbols, even if they are not published
- packageVersion: '${{ parameters.nugetPackageVersion }}'
+ packageVersion: '${{ parameters.akvPackageVersion }}'
nuspecPath: '$(REPO_ROOT)/tools/specs/add-ons/$(PACKAGE_NAME).nuspec'
outputDirectory: '$(ARTIFACT_PATH)'
- referenceType: 'Package'
+ referenceType: Package
+ properties: MdsPackageVersion=${{ parameters.mdsPackageVersion }}
- template: ../steps/compound-esrp-code-signing-step.yml@self
parameters:
@@ -138,7 +139,7 @@ jobs:
- ${{ if parameters.publishSymbols }}:
- template: ../steps/compound-publish-symbols-step.yml@self
parameters:
- artifactName: 'akv_symbols_$(System.TeamProject)_$(Build.Repository.Name)_$(Build.SourceBranchName)_${{ parameters.nugetPackageVersion }}_$(System.TimelineId)'
+ artifactName: 'akv_symbols_$(System.TeamProject)_$(Build.Repository.Name)_$(Build.SourceBranchName)_${{ parameters.akvPackageVersion }}_$(System.TimelineId)'
azureSubscription: '${{ parameters.symbolsAzureSubscription }}'
publishProjectName: '${{ parameters.symbolsPublishProjectName }}'
packageName: '$(PACKAGE_NAME)'
@@ -151,4 +152,4 @@ jobs:
Windows_NT/${{ parameters.buildConfiguration }}.AnyCPU/AzureKeyVaultProvider/**/$(PACKAGE_NAME).pdb
AnyOS/${{ parameters.buildConfiguration }}.AnyCPU/AzureKeyVaultProvider/**/$(PACKAGE_NAME).pdb
uploadAccount: '${{ parameters.symbolsUploadAccount }}'
- version: '${{ parameters.nugetPackageVersion }}'
+ version: '${{ parameters.akvPackageVersion }}'
diff --git a/eng/pipelines/jobs/pack-abstractions-package-ci-job.yml b/eng/pipelines/jobs/pack-abstractions-package-ci-job.yml
new file mode 100644
index 0000000000..13bf3618fb
--- /dev/null
+++ b/eng/pipelines/jobs/pack-abstractions-package-ci-job.yml
@@ -0,0 +1,148 @@
+################################################################################
+# Licensed to the .NET Foundation under one or more agreements. The .NET
+# Foundation licenses this file to you under the MIT license. See the LICENSE
+# file in the project root for more information.
+################################################################################
+
+# This job packs the Abstractions package into NuGet and symbols packages and
+# publishes them as a named pipeline artifact.
+#
+# This template defines a job named 'pack_abstractions_package_job' that can be
+# depended on by downstream jobs.
+
+parameters:
+
+ # The version to apply to the Abstractions NuGet package and its assemblies.
+ - name: abstractionsPackageVersion
+ type: string
+
+ # The name to apply to the published pipeline artifact.
+ - name: artifactName
+ type: string
+ default: Abstractions.Artifact
+
+ # The type of build to test (Release or Debug)
+ - name: buildConfiguration
+ type: string
+ values:
+ - Release
+ - Debug
+
+ # The list of upstream jobs to depend on.
+ - name: dependsOn
+ type: object
+ default: []
+
+ # The verbosity level for the dotnet CLI commands.
+ - name: verbosity
+ type: string
+ default: normal
+ values:
+ - quiet
+ - minimal
+ - normal
+ - detailed
+ - diagnostic
+
+jobs:
+
+ - job: pack_abstractions_package_job
+ displayName: 'Pack Abstractions Package'
+
+ dependsOn: ${{ parameters.dependsOn }}
+
+ pool:
+ name: Azure Pipelines
+ vmImage: ubuntu-latest
+
+ variables:
+
+ # The Abstractions project file to use for all dotnet CLI commands.
+ - name: project
+ value: src/Microsoft.Data.SqlClient.Extensions/Abstractions/src/Abstractions.csproj
+
+ # The directory where the NuGet packages will be staged before being
+ # published as pipeline artifacts.
+ - name: dotnetPackagesDir
+ value: $(Build.StagingDirectory)/dotnetPackages
+
+ # dotnet CLI arguments common to all commands.
+ - name: commonArguments
+ value: >-
+ --verbosity ${{ parameters.verbosity }}
+
+ # dotnet CLI arguments for build/test/pack commands
+ - name: buildArguments
+ value: >-
+ $(commonArguments)
+ --configuration ${{ parameters.buildConfiguration }}
+ -p:AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }}
+
+ # Explicitly unset the $PLATFORM environment variable that is set by the
+ # 'ADO Build properties' Library in the ADO SqlClientDrivers public project.
+ # This is defined with a non-standard Platform of 'AnyCPU', and will fail
+ # the builds if left defined. The stress tests solution does not require
+ # any specific Platform, and so its solution file doesn't support any
+ # non-standard platforms.
+ #
+ # Note that Azure Pipelines will inject this variable as PLATFORM into the
+ # environment of all tasks in this job.
+ #
+ # See:
+ # https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch
+ #
+ - name: Platform
+ value: ''
+
+ # Do the same for $CONFIGURATION since we explicitly set it using our
+ # 'buildConfiguration' parameter, and we don't want the environment to
+ # override us.
+ - name: Configuration
+ value: ''
+
+ steps:
+
+ # Install the .NET 9.0 SDK.
+ - task: UseDotNet@2
+ displayName: Install .NET 9.0 SDK
+ inputs:
+ packageType: sdk
+ version: 9.x
+
+ # We use the 'custom' command because the DotNetCoreCLI@2 task doesn't
+ # support all of our argument combinations for the different build steps.
+
+ # Restore the solution.
+ - task: DotNetCoreCLI@2
+ displayName: Restore Solution
+ inputs:
+ command: custom
+ custom: restore
+ projects: $(project)
+ arguments: $(commonArguments)
+
+ # Build the solution.
+ - task: DotNetCoreCLI@2
+ displayName: Build Solution
+ inputs:
+ command: custom
+ custom: build
+ projects: $(project)
+ arguments: $(buildArguments) --no-restore
+
+ # Create the NuGet packages.
+ - task: DotNetCoreCLI@2
+ displayName: Create NuGet Package
+ inputs:
+ command: custom
+ custom: pack
+ projects: $(project)
+ arguments: $(buildArguments) --no-build -o $(dotnetPackagesDir)
+
+ # Publish the NuGet packages as a named pipeline artifact.
+ - task: PublishPipelineArtifact@1
+ displayName: Publish Pipeline Artifact
+ inputs:
+ targetPath: $(dotnetPackagesDir)
+ artifactName: ${{ parameters.artifactName }}
+ publishLocation: pipeline
diff --git a/eng/pipelines/jobs/stress-tests-ci-job.yml b/eng/pipelines/jobs/stress-tests-ci-job.yml
index 2e01470fe5..cc2913c367 100644
--- a/eng/pipelines/jobs/stress-tests-ci-job.yml
+++ b/eng/pipelines/jobs/stress-tests-ci-job.yml
@@ -4,7 +4,7 @@
# file in the project root for more information.
################################################################################
-# This stage builds and runs stress tests against an MDS NuGet package available
+# This job builds and runs stress tests against an MDS NuGet package available
# as a pipeline artifact.
#
# The stress tests are located here:
diff --git a/eng/pipelines/jobs/test-abstractions-package-ci-job.yml b/eng/pipelines/jobs/test-abstractions-package-ci-job.yml
new file mode 100644
index 0000000000..a5e0f98978
--- /dev/null
+++ b/eng/pipelines/jobs/test-abstractions-package-ci-job.yml
@@ -0,0 +1,174 @@
+################################################################################
+# Licensed to the .NET Foundation under one or more agreements. The .NET
+# Foundation licenses this file to you under the MIT license. See the LICENSE
+# file in the project root for more information.
+################################################################################
+
+# This job builds the Abstractions package and runs its tests for a set of .NET
+# runtimes.
+#
+# This template defines a job named 'test_abstractions_package_job_'
+# that can be depended on by downstream jobs.
+
+parameters:
+
+ # The type of build to test (Release or Debug)
+ - name: buildConfiguration
+ type: string
+ values:
+ - Release
+ - Debug
+
+ # The prefix to prepend to the job's display name:
+ #
+ # [] Run Stress Tests
+ #
+ - name: displayNamePrefix
+ type: string
+
+ # The suffix to append to the job name.
+ - name: jobNameSuffix
+ type: string
+
+ # The list of .NET Framework runtimes to test against.
+ - name: netFrameworkRuntimes
+ type: object
+ default: []
+
+ # The list of .NET runtimes to test against.
+ - name: netRuntimes
+ type: object
+ default: []
+
+ # The name of the Azure Pipelines pool to use.
+ - name: poolName
+ type: string
+
+ # The verbosity level for the dotnet CLI commands.
+ - name: verbosity
+ type: string
+ default: normal
+ values:
+ - quiet
+ - minimal
+ - normal
+ - detailed
+ - diagnostic
+
+ # The pool VM image to use.
+ - name: vmImage
+ type: string
+
+jobs:
+
+ - job: test_abstractions_package_job_${{ parameters.jobNameSuffix }}
+ displayName: '[${{ parameters.displayNamePrefix }}] Test Abstractions Package'
+ pool:
+ name: ${{ parameters.poolName }}
+
+ # Images provided by Azure Pipelines must be selected using 'vmImage'.
+ ${{ if eq(parameters.poolName, 'Azure Pipelines') }}:
+ vmImage: ${{ parameters.vmImage }}
+ # Images provided by 1ES must be selected using a demand.
+ ${{ else }}:
+ demands:
+ - imageOverride -equals ${{ parameters.vmImage }}
+
+ variables:
+
+ # The Abstractions test project file to use for all dotnet CLI commands.
+ - name: project
+ value: src/Microsoft.Data.SqlClient.Extensions/Abstractions/test/Abstractions.Test.csproj
+
+ # dotnet CLI arguments common to all commands.
+ - name: commonArguments
+ value: >-
+ --verbosity ${{ parameters.verbosity }}
+
+ # dotnet CLI arguments for build/test/pack commands
+ - name: buildArguments
+ value: >-
+ $(commonArguments)
+ --configuration ${{ parameters.buildConfiguration }}
+
+ # Explicitly unset the $PLATFORM environment variable that is set by the
+ # 'ADO Build properties' Library in the ADO SqlClientDrivers public project.
+ # This is defined with a non-standard Platform of 'AnyCPU', and will fail
+ # the builds if left defined. The stress tests solution does not require
+ # any specific Platform, and so its solution file doesn't support any
+ # non-standard platforms.
+ #
+ # Note that Azure Pipelines will inject this variable as PLATFORM into the
+ # environment of all tasks in this job.
+ #
+ # See:
+ # https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch
+ #
+ - name: Platform
+ value: ''
+
+ # Do the same for $CONFIGURATION since we explicitly set it using our
+ # 'buildConfiguration' parameter, and we don't want the environment to
+ # override us.
+ - name: Configuration
+ value: ''
+
+ steps:
+
+ # Install the .NET 9.0 SDK.
+ - task: UseDotNet@2
+ displayName: Install .NET 9.0 SDK
+ inputs:
+ packageType: sdk
+ version: 9.x
+
+ # Install the .NET 8.0 runtime.
+ - task: UseDotNet@2
+ displayName: Install .NET 8.0 Runtime
+ inputs:
+ packageType: runtime
+ version: 8.x
+
+ # The Windows agent images include a suitable .NET Framework runtime, so
+ # we don't have to install one explicitly.
+
+ # We use the 'custom' command because the DotNetCoreCLI@2 task doesn't
+ # support all of our argument combinations for the different build steps.
+
+ # Restore the solution.
+ - task: DotNetCoreCLI@2
+ displayName: Restore Solution
+ inputs:
+ command: custom
+ custom: restore
+ projects: $(project)
+ arguments: $(commonArguments)
+
+ # Build the solution.
+ - task: DotNetCoreCLI@2
+ displayName: Build Solution
+ inputs:
+ command: custom
+ custom: build
+ projects: $(project)
+ arguments: $(buildArguments) --no-restore
+
+ # Run the tests for each .NET runtime.
+ - ${{ each runtime in parameters.netRuntimes }}:
+ - task: DotNetCoreCLI@2
+ displayName: Test [${{ runtime }}]
+ inputs:
+ command: custom
+ custom: test
+ projects: $(project)
+ arguments: $(buildArguments) --no-build -f ${{ runtime }}
+
+ # Run the tests for each .NET Framework runtime.
+ - ${{ each runtime in parameters.netFrameworkRuntimes }}:
+ - task: DotNetCoreCLI@2
+ displayName: Test [${{ runtime }}]
+ inputs:
+ command: custom
+ custom: test
+ projects: $(project)
+ arguments: $(buildArguments) --no-build -f ${{ runtime }}
diff --git a/eng/pipelines/libraries/ci-build-variables.yml b/eng/pipelines/libraries/ci-build-variables.yml
index d3ae6fcbc3..6b6ac2a825 100644
--- a/eng/pipelines/libraries/ci-build-variables.yml
+++ b/eng/pipelines/libraries/ci-build-variables.yml
@@ -6,7 +6,6 @@
variables:
- group: 'ADO Build properties'
- - group: 'ADO CI Packaging'
- group: 'ADO Test Configuration Properties'
- name: buildNumber
@@ -15,21 +14,15 @@ variables:
value: 'net8.0'
- name: SQLTarget
value: 'localhost'
- - name: NugetPackageVersion
- value: $(Major).$(Minor)$(Patch)-pull.1$(buildnumber)
+ - name: abstractionsPackageVersion
+ value: 1.0.0.$(buildNumber)-ci
+ - name: akvPackageVersion
+ value: 7.0.0.$(buildNumber)-ci
+ - name: mdsPackageVersion
+ value: 7.0.0.$(buildNumber)-ci
- name: skipComponentGovernanceDetection
value: true
- name: runCodesignValidationInjection
value: false
- name: packagePath
value: '$(Build.SourcesDirectory)/packages'
-
- # TODO(ADO-38703): Remove these when the other pipeline changes arrive.
- - name: baseBuildNumber
- value: $[ split(variables['Build.BuildNumber'], '.')[0] ]
- - name: abstractionsPackageVersion
- value: 1.0.0.$(baseBuildNumber)
- - name: mdsPackageVersion
- value: $(NugetPackageVersion)
- - name: akvPackageVersion
- value: $(NugetPackageVersion)
diff --git a/eng/pipelines/libraries/common-variables.yml b/eng/pipelines/libraries/common-variables.yml
index 3e3cb15559..58108bc12c 100644
--- a/eng/pipelines/libraries/common-variables.yml
+++ b/eng/pipelines/libraries/common-variables.yml
@@ -26,6 +26,39 @@ variables:
- name: artifactDirectory
value: '$(REPOROOT)/packages'
+ # C# assembly versions must be in the format: Major.Minor.Build.Revision, but
+ # $(Build.BuildNumber) has the format XXX.YY. Additionally, each version part
+ # must be a positive 16-bit integer less than 65535. Simply concatenating
+ # both parts of $(Build.BuildNumber) could produce values larger than 65534,
+ # so we must omit the second part entirely. Unfortunately, this may result
+ # in multiple subsequent pipline builds using the same C# assembly versions.
+ # The package versions will not be affected and will show the complete
+ # $(Build.BuildNumber) values.
+ - name: assemblyBuildNumber
+ value: $[ split(variables['Build.BuildNumber'], '.')[0] ]
+
+ # ----------------------------------------------------------------------------
+ # Abstractions Package Versions
+ #
+ # These are version values that will be used by the official build. They
+ # should be updated after each release to reflect the next release's versions.
+
+ # The NuGet package version for GA releases (non-preview).
+ - name: abstractionsPackageVersion
+ value: '1.0.0'
+
+ # The NuGet package version for preview releases.
+ - name: abstractionsPackagePreviewVersion
+ value: 1.0.0-preview1.$(Build.BuildNumber)
+
+ # The AssemblyFileVersion for all assemblies in the Abstractions package.
+ #
+ - name: abstractionsAssemblyFileVersion
+ value: 1.0.0.$(assemblyBuildNumber)
+
+ # ----------------------------------------------------------------------------
+ # MDS Package Versions
+
# Update this after every release. This is used to generate the MDS NuGet package version.
- name: Major
value: '7'
@@ -40,21 +73,11 @@ variables:
- name: Revision
value: '1'
- - name: NugetPackageVersion
+ - name: mdsPackageVersion
value: $(Major).$(Minor).$(Patch)
- - name: PreviewNugetPackageVersion
+ - name: previewMdsPackageVersion
value: $(Major).$(Minor).$(Patch)$(Preview)$(Revision).$(Build.BuildNumber)
- - name: AssemblyFileVersion
- value: '$(Major).$(Minor)$(Patch).$(Build.BuildNumber)'
+ - name: mdsAssemblyFileVersion
+ value: $(Major).$(Minor).$(Patch).$(assemblyBuildNumber)
- name: nuspecPath
value: '$(REPOROOT)/tools/specs/Microsoft.Data.SqlClient.nuspec'
-
- # TODO(ADO-38703): Remove these when the other pipeline changes arrive.
- - name: baseBuildNumber
- value: $[ split(variables['Build.BuildNumber'], '.')[0] ]
- - name: abstractionsPackageVersion
- value: 1.0.0.$(baseBuildNumber)
- - name: mdsPackageVersion
- value: $(NugetPackageVersion)
- - name: akvPackageVersion
- value: $(NugetPackageVersion)
diff --git a/eng/pipelines/libraries/mds-validation-variables.yml b/eng/pipelines/libraries/mds-validation-variables.yml
index d7723a059f..93dc0804ff 100644
--- a/eng/pipelines/libraries/mds-validation-variables.yml
+++ b/eng/pipelines/libraries/mds-validation-variables.yml
@@ -13,7 +13,7 @@ variables:
- name: extractedNugetRootPath
value: $(Build.SourcesDirectory)\$(TempFolderName)\Microsoft.Data.SqlClient
- name: extractedNugetPath
- value: $(extractedNugetRootPath).$(NugetPackageVersion)
+ value: $(extractedNugetRootPath).$(mdsPackageVersion)
- name: expectedFolderNames
value: lib,ref,runtimes
- name: expectedDotnetVersions
diff --git a/eng/pipelines/stages/build-abstractions-package-ci-stage.yml b/eng/pipelines/stages/build-abstractions-package-ci-stage.yml
new file mode 100644
index 0000000000..2a9268e737
--- /dev/null
+++ b/eng/pipelines/stages/build-abstractions-package-ci-stage.yml
@@ -0,0 +1,119 @@
+################################################################################
+# Licensed to the .NET Foundation under one or more agreements. The .NET
+# Foundation licenses this file to you under the MIT license. See the LICENSE
+# file in the project root for more information.
+################################################################################
+
+# This stage builds the Abstractions package, runs tests, and publishes the
+# resulting NuGet packages as pipeline artifacts.
+#
+# The NuGet packages have the following properties:
+#
+# Name: Microsoft.Data.SqlClient.Extensions.Abstractions
+# Version: ${{ abstractionsPackageVersion }} (from parameter)
+#
+# The following NuGet packages are published:
+#
+# Microsoft.Data.SqlClient.Extensions.Abstractions..nupkg
+# Microsoft.Data.SqlClient.Extensions.Abstractions..snupkg (symbols)
+#
+# The packages are published to pipeline artifacts with the name specified by
+# the ${{ artifactName }} parameter.
+#
+# This template defines a stage named 'build_abstractions_package_stage' that
+# can be depended on by downstream stages.
+
+parameters:
+
+ # The version to apply to the NuGet package and DLLs.
+ - name: abstractionsPackageVersion
+ type: string
+
+ # The name of the pipeline artifact to publish.
+ - name: artifactName
+ type: string
+ default: Abstractions.Artifact
+
+ # The type of build to produce (Release or Debug)
+ - name: buildConfiguration
+ type: string
+ default: Release
+ values:
+ - Release
+ - Debug
+
+ # The verbosity level for the dotnet CLI commands.
+ - name: verbosity
+ type: string
+ default: normal
+ values:
+ - quiet
+ - minimal
+ - normal
+ - detailed
+ - diagnostic
+
+stages:
+
+ - stage: build_abstractions_package_stage
+ displayName: Build Abstractions Package
+
+ jobs:
+
+ # ------------------------------------------------------------------------
+ # Build and test on Linux.
+
+ - template: ../jobs/test-abstractions-package-ci-job.yml@self
+ parameters:
+ jobNameSuffix: linux
+ displayNamePrefix: Linux
+ poolName: Azure Pipelines
+ vmImage: ubuntu-latest
+ buildConfiguration: ${{ parameters.buildConfiguration }}
+ netRuntimes: [net8.0, net9.0]
+ netFrameworkRuntimes: []
+ verbosity: ${{ parameters.verbosity }}
+
+ # ------------------------------------------------------------------------
+ # Build and test on Windows
+
+ - template: ../jobs/test-abstractions-package-ci-job.yml@self
+ parameters:
+ jobNameSuffix: windows
+ displayNamePrefix: Win
+ poolName: Azure Pipelines
+ vmImage: windows-latest
+ buildConfiguration: ${{ parameters.buildConfiguration }}
+ netRuntimes: [net8.0, net9.0]
+ netFrameworkRuntimes: [net462, net47, net471, net472, net48, net481]
+ verbosity: ${{ parameters.verbosity }}
+
+ # ------------------------------------------------------------------------
+ # Build and test on macOS.
+
+ - template: ../jobs/test-abstractions-package-ci-job.yml
+ parameters:
+ jobNameSuffix: macos
+ displayNamePrefix: macOS
+ poolName: Azure Pipelines
+ vmImage: macos-latest
+ buildConfiguration: ${{ parameters.buildConfiguration }}
+ netRuntimes: [net8.0, net9.0]
+ netFrameworkRuntimes: []
+ verbosity: ${{ parameters.verbosity }}
+
+ # ------------------------------------------------------------------------
+ # Create and publish the NuGet package.
+
+ - template: ../jobs/pack-abstractions-package-ci-job.yml@self
+ parameters:
+ artifactName: ${{ parameters.artifactName }}
+ buildConfiguration: ${{ parameters.buildConfiguration }}
+ abstractionsPackageVersion: ${{ parameters.abstractionsPackageVersion }}
+ verbosity: ${{ parameters.verbosity }}
+ dependsOn:
+ # We depend on all of the test jobs to ensure the tests pass before
+ # producing the NuGet package.
+ - test_abstractions_package_job_linux
+ - test_abstractions_package_job_windows
+ - test_abstractions_package_job_macos
diff --git a/eng/pipelines/steps/compound-build-akv-step.yml b/eng/pipelines/steps/compound-build-akv-step.yml
index 906dcfaf72..a547604a2c 100644
--- a/eng/pipelines/steps/compound-build-akv-step.yml
+++ b/eng/pipelines/steps/compound-build-akv-step.yml
@@ -7,16 +7,16 @@
# @TODO: This can probably be made generic and pass in the command lines for msbuild
# BUT, they should be kept separate by now as we rebuild build.proj in parallel, we won't
# affect >1 project at a time.
-# @TODO: NugetPackageVersion should not be used for MDS package version
+# @TODO: mdsPackageVersion should not be used for MDS package version
parameters:
- - name: assemblyFileVersion
+ - name: akvPackageVersion
type: string
- - name: buildConfiguration
+ - name: assemblyFileVersion
type: string
- - name: mdsPackageVersion
+ - name: buildConfiguration
type: string
steps:
@@ -46,7 +46,7 @@ steps:
msbuildArguments: >-
-t:BuildAkv
-p:AssemblyFileVersion=${{ parameters.assemblyFileVersion }}
- -p:NugetPackageVersion=${{ parameters.mdsPackageVersion }}
+ -p:AkvPackageVersion=${{ parameters.akvPackageVersion }}
-p:ReferenceType=Package
-p:SigningKeyPath=$(Agent.TempDirectory)/netfxKeypair.snk
diff --git a/eng/pipelines/steps/compound-nuget-pack-step.yml b/eng/pipelines/steps/compound-nuget-pack-step.yml
index 888078ed30..d645a361c3 100644
--- a/eng/pipelines/steps/compound-nuget-pack-step.yml
+++ b/eng/pipelines/steps/compound-nuget-pack-step.yml
@@ -23,14 +23,36 @@ parameters:
- name: referenceType
type: string
values:
- - Package
- - Project
+ - Package
+ - Project
+
+ # Semi-colon separated properties to pass to nuget via the -properties
+ # argument.
+ - name: properties
+ type: string
+ default: ''
steps:
- - task: NuGetToolInstaller@1
- displayName: 'Install Latest Nuget'
- inputs:
- checkLatest: true
+ # This tool is failing on OneBranch pipelines, possibly due to new
+ # network isolation rules:
+ #
+ # ERR:Client network socket disconnected before secure TLS connection was established
+ #
+ # Our AKV Official build uses this 1ES image:
+ #
+ # Image: 1ES-OB-2022-D8-Netlock-V2_westus2_1_image
+ #
+ # An ICM for this issue exists:
+ #
+ # https://portal.microsofticm.com/imp/v5/incidents/details/690355343/summary
+ #
+ # Recommendation is to remove this step since NuGet is already present on
+ # the 1ES images.
+ #
+ # - task: NuGetToolInstaller@1
+ # displayName: 'Install Latest Nuget'
+ # inputs:
+ # checkLatest: true
- ${{ if parameters.generateSymbolsPackage }}:
- task: NuGetCommand@2
@@ -44,7 +66,7 @@ steps:
-SymbolPackageFormat snupkg
-Version ${{ parameters.packageVersion }}
-OutputDirectory ${{ parameters.outputDirectory }}
- -Properties "COMMITID=$(Build.SourceVersion);Configuration=${{ parameters.buildConfiguration }};ReferenceType=${{ parameters.referenceType }}"
+ -Properties "COMMITID=$(Build.SourceVersion);Configuration=${{ parameters.buildConfiguration }};ReferenceType=${{ parameters.referenceType }};${{ parameters.properties }}"
- ${{ else }}:
- task: NuGetCommand@2
displayName: 'Generate NuGet Package'
@@ -55,4 +77,4 @@ steps:
${{ parameters.nuspecPath }}
-Version ${{ parameters.packageVersion }}
-OutputDirectory ${{ parameters.outputDirectory }}
- -Properties "COMMITID=$(Build.SourceVersion);Configuration=${{ parameters.buildConfiguration }};ReferenceType=${{ parameters.referenceType }}"
+ -Properties "COMMITID=$(Build.SourceVersion);Configuration=${{ parameters.buildConfiguration }};ReferenceType=${{ parameters.referenceType }};${{ parameters.properties }}"
diff --git a/eng/pipelines/steps/roslyn-analyzers-akv-step.yml b/eng/pipelines/steps/roslyn-analyzers-akv-step.yml
index 0e05177d5a..c7acc84088 100644
--- a/eng/pipelines/steps/roslyn-analyzers-akv-step.yml
+++ b/eng/pipelines/steps/roslyn-analyzers-akv-step.yml
@@ -9,10 +9,10 @@
# affect >1 project at a time.
parameters:
- - name: buildConfiguration
+ - name: akvPackageVersion
type: string
- - name: mdsPackageVersion
+ - name: buildConfiguration
type: string
steps:
@@ -25,7 +25,7 @@ steps:
$(REPO_ROOT)/build.proj
-t:BuildAkv
-p:Configuration=${{ parameters.buildConfiguration }}
- -p:NugetPackageVersion=${{ parameters.mdsPackageVersion }}
+ -p:AkvPackageVersion=${{ parameters.akvPackageVersion }}
-p:ReferenceType=Package
msBuildVersion: 17.0
setupCommandLinePicker: vs2022
diff --git a/eng/pipelines/variables/akv-official-variables.yml b/eng/pipelines/variables/akv-official-variables.yml
index aaf8de7c5e..b22044548d 100644
--- a/eng/pipelines/variables/akv-official-variables.yml
+++ b/eng/pipelines/variables/akv-official-variables.yml
@@ -37,7 +37,5 @@ variables:
# Compound Variables ---------------------------------------------------
- name: assemblyFileVersion
value: '${{ variables.versionMajor }}.${{ variables.versionMinor }}${{ variables.versionPatch }}.$(Build.BuildNumber)'
- - name: nugetPackageVersion
+ - name: akvPackageVersion
value: '${{ variables.versionMajor }}.${{ variables.versionMinor }}.${{ variables.versionPatch }}${{ variables.versionPreview }}'
-
-
diff --git a/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.csproj
index f4fa41bf45..4b658f409a 100644
--- a/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.csproj
+++ b/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.csproj
@@ -55,12 +55,9 @@
-
-
diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj
index 9f46d448b3..36b20942f3 100644
--- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj
+++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj
@@ -1080,12 +1080,9 @@
-
-
diff --git a/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.csproj
index e8dbcf7070..f73b8682a0 100644
--- a/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.csproj
+++ b/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.csproj
@@ -58,12 +58,9 @@
-
-
diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj
index 250308d053..e64535ec0e 100644
--- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj
+++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj
@@ -1054,12 +1054,9 @@
-
-
diff --git a/tools/props/Versions.props b/tools/props/Versions.props
index 7a3ba3cc9a..e0e1a5d6cf 100644
--- a/tools/props/Versions.props
+++ b/tools/props/Versions.props
@@ -34,7 +34,7 @@
-->
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/tools/specs/add-ons/Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider.nuspec b/tools/specs/add-ons/Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider.nuspec
index 92cbc480dd..3fbcae1257 100644
--- a/tools/specs/add-ons/Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider.nuspec
+++ b/tools/specs/add-ons/Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider.nuspec
@@ -45,23 +45,28 @@ Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyStoreProvider.SqlColumnEncrypti
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
+