Skip to content

Support building on Linux #3311

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 53 additions & 51 deletions BUILDGUIDE.md

Large diffs are not rendered by default.

505 changes: 364 additions & 141 deletions build.proj

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ jobs:
displayName: 'Modify TestMicrosoftDataSqlClientVersion'

- powershell: |
# Check assembly versions.
# Check AssemblyFileVersion

[Xml] $versionprops = Get-Content -Path "tools/props/Versions.props"
$AssemblyFileVersion = $versionprops.Project.PropertyGroup[0].AssemblyFileVersion
Expand Down
10 changes: 0 additions & 10 deletions eng/pipelines/common/templates/steps/build-all-tests-step.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,16 +42,6 @@ steps:
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'))

- ${{elseif eq(parameters.OSGroup, '')}}: # .NET on Windows
- task: MSBuild@1
displayName: 'Build Tests NetCore [Win]'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,6 @@ parameters:
type: boolean
default: false

- name: TestTargetOS
type: string
default: Windowsnetcoreapp
values:
- Windowsnetfx
- Windowsnetcoreapp
- Unixnetcoreapp

- name: retryCountOnManualTests
type: number
default: 2
Expand All @@ -62,21 +54,21 @@ steps:
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:TF=${{parameters.TargetNetCoreVersion }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.NugetPackageVersion }} -p:Configuration=${{parameters.configuration }}'

# Don't run unit tests using package reference. Unit tests are only run using project reference.

- task: DotNetCoreCLI@2
displayName: 'Run Functional Tests for ${{parameters.TargetNetCoreVersion }}'
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"'
projects: 'src\Microsoft.Data.SqlClient\tests\FunctionalTests\Microsoft.Data.SqlClient.Tests.csproj'
arguments: '-p:Platform=${{parameters.platform }} -p:TF=${{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"'

- 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:TF=${{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"'
retryCountOnTaskFailure: ${{parameters.retryCountOnManualTests }}
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,6 @@ parameters:
type: boolean
default: false

- name: TestTargetOS
type: string
default: Windowsnetfx
values:
- Windowsnetfx
- Windowsnetcoreapp
- Unixnetcoreapp

- name: retryCountOnManualTests
type: number
default: 2
Expand All @@ -61,7 +53,7 @@ steps:
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.NugetPackageVersion }} -p:TF=${{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.

Expand All @@ -70,12 +62,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:TF=${{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"'

- 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:TF=${{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"'
retryCountOnTaskFailure: ${{parameters.retryCountOnManualTests }}
16 changes: 12 additions & 4 deletions eng/pipelines/common/templates/steps/ci-project-build-step.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ parameters:

- name: operatingSystem
type: string
default: deferedToRuntime
default: deferredToRuntime
values:
- Windows
- Linux
- MacOS
- deferedToRuntime
- deferredToRuntime

- name: build
type: string
Expand All @@ -45,7 +45,7 @@ steps:
packageType: 'runtime'
version: '8.0'

- ${{ if or(eq(parameters.operatingSystem, 'Windows'), eq(parameters.operatingSystem, 'deferedToRuntime')) }}:
- ${{ if or(eq(parameters.operatingSystem, 'Windows'), eq(parameters.operatingSystem, 'deferredToRuntime')) }}:
- ${{ if or(eq(parameters.build, 'MDS'), eq(parameters.build, 'all'), eq(parameters.build, 'allNoDocs')) }}:
- task: MSBuild@1
displayName: 'Restore nugets [Win]'
Expand Down Expand Up @@ -91,6 +91,14 @@ steps:
configuration: '${{ parameters.configuration }}'
msbuildArguments: '-t:BuildAKVNetFx -p:BuildNumber=${{ parameters.buildNumber }}'

# - task: DotNetCoreCLI@2
# displayName: 'Build AKV Provider NetFx (dotnet) [Win]'
# condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
# inputs:
# command: build
# projects: build.proj
# arguments: '-t:BuildAKVNetFx -p:Platform=${{ parameters.platform }} -p:Configuration=${{ parameters.configuration }} -p:BuildNumber=${{ parameters.buildNumber }} -v detailed --no-restore'

- task: MSBuild@1
displayName: 'Build AKV Provider NetCore All OS [Win]'
condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
Expand All @@ -101,7 +109,7 @@ steps:
configuration: '${{ parameters.configuration }}'
msbuildArguments: '-t:BuildAKVNetCoreAllOS -p:BuildNumber=${{ parameters.buildNumber }}'

- ${{ if or(eq(parameters.operatingSystem, 'Linux'), eq(parameters.operatingSystem, 'MacOS'), eq(parameters.operatingSystem, 'deferedToRuntime')) }}:
- ${{ if or(eq(parameters.operatingSystem, 'Linux'), eq(parameters.operatingSystem, 'MacOS'), eq(parameters.operatingSystem, 'deferredToRuntime')) }}:
- task: DotNetCoreCLI@2
displayName: 'Build Driver [non-Win]'
condition: and(succeeded(), ne(variables['Agent.OS'], 'Windows_NT'))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ parameters:
default: software

- name: referenceType
default: project
default: Project
values:
- project
- package
- Project
- Package

- name: listOfTF
type: object
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ parameters:
default: true

- name: referenceType
default: project
default: Project
values:
- project
- package
- Project
- Package

steps:
- ${{ if parameters.installNuget }}:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ parameters:
public: true

- name: referenceType
default: project
default: Project
values:
- project
- package
- Project
- Package

- name: product
default: MDS
Expand Down
26 changes: 19 additions & 7 deletions eng/pipelines/common/templates/steps/run-all-tests-step.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,10 +75,16 @@ steps:
msbuildArchitecture: ${{parameters.msbuildArchitecture }}
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 }}'
${{ if eq(parameters.msbuildArchitecture, 'x64') }}:
${{ if contains(parameters.targetFramework, 'net4') }}:
msbuildArguments: '-t:RunFunctionalTestsWindowsNetFx -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }}'
${{ else }}:
msbuildArguments: '-t:RunFunctionalTestsWindows -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }}'
${{ 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 }}'
${{ if contains(parameters.targetFramework, 'net4') }}:
msbuildArguments: '-t:RunFunctionalTestsWindowsNetFx -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }} -p:DotnetPath=${{parameters.dotnetx86RootPath }}'
${{ else }}:
msbuildArguments: '-t:RunFunctionalTestsWindows -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }} -p:DotnetPath=${{parameters.dotnetx86RootPath }}'
condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
retryCountOnTaskFailure: 1

Expand All @@ -90,9 +96,15 @@ 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 }}'
${{ if contains(parameters.targetFramework, 'net4') }}:
msbuildArguments: '-t:RunManualTestsWindowsNetFx -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }}'
${{ else }}:
msbuildArguments: '-t:RunManualTestsWindows -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }}'
${{ 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 }}'
${{ if contains(parameters.targetFramework, 'net4') }}:
msbuildArguments: '-t:RunManualTestsWindowsNetFx -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }} -p:DotnetPath=${{parameters.dotnetx86RootPath }}'
${{ else }}:
msbuildArguments: '-t:RunManualTestsWindows -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }} -p:DotnetPath=${{parameters.dotnetx86RootPath }}'
condition: eq(variables['Agent.OS'], 'Windows_NT')
retryCountOnTaskFailure: 2

Expand All @@ -116,7 +128,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:RunFunctionalTestsUnix -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }} -p:platform=${{parameters.platform }} -p:Configuration=${{parameters.configuration }}'
verbosityRestore: Detailed
verbosityPack: Detailed
retryCountOnTaskFailure: 1
Expand All @@ -128,7 +140,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:RunManualTestsUnix -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }} -p:platform=${{parameters.platform }} -p:Configuration=${{parameters.configuration }}'
verbosityRestore: Detailed
verbosityPack: Detailed
retryCountOnTaskFailure: 2
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,30 +54,32 @@ steps:
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)
}
# - 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)
}
# $parent_xpath = '/Project/ItemGroup/PackageReference[@Include="Microsoft.Data.SqlClient"]'
# $node = $Doc.SelectSingleNode($parent_xpath)
# if($node -ne $null){
# $node.Version="${{parameters.nugetPackageVersion }}"
# }
# else{
# $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)'
# $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)'
Loading
Loading