mirror of https://github.com/dotnet/runtime
Use platform-matrix and split jobs by steps for libraries pipelines (#274)
This commit is contained in:
parent
89f3ff1971
commit
ef33d76b27
|
@ -159,6 +159,22 @@ jobs:
|
|||
managedTestBuildOsGroup: OSX
|
||||
${{ insert }}: ${{ parameters.jobParameters }}
|
||||
|
||||
- ${{ if containsValue(parameters.platforms, 'WebAssembly_wasm') }}:
|
||||
- template: xplat-setup.yml
|
||||
parameters:
|
||||
jobTemplate: ${{ parameters.jobTemplate }}
|
||||
helixQueuesTemplate: ${{ parameters.helixQueuesTemplate }}
|
||||
osGroup: WebAssembly
|
||||
archType: wasm
|
||||
platform: WebAssembly_wasm
|
||||
container:
|
||||
image: ubuntu-16.04-a50a721-20191023143845
|
||||
registry: mcr
|
||||
jobParameters:
|
||||
stagedBuild: ${{ parameters.stagedBuild }}
|
||||
buildConfig: ${{ parameters.buildConfig }}
|
||||
${{ insert }}: ${{ parameters.jobParameters }}
|
||||
|
||||
# FreeBSD
|
||||
|
||||
# FreeBSD machines are currently offline. Re-enable in the official build when
|
||||
|
|
|
@ -22,7 +22,6 @@ trigger:
|
|||
- src/coreclr/*
|
||||
- eng/pipelines/coreclr/*
|
||||
- eng/pipelines/installer/*
|
||||
- eng/pipelines/common/*
|
||||
|
||||
pr:
|
||||
branches:
|
||||
|
@ -43,30 +42,6 @@ pr:
|
|||
- src/coreclr/*
|
||||
- eng/pipelines/coreclr/*
|
||||
- eng/pipelines/installer/*
|
||||
- eng/pipelines/common/*
|
||||
|
||||
resources:
|
||||
containers:
|
||||
- container: centos7_container
|
||||
image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-f39df28-20191023143754
|
||||
|
||||
- container: centos6_container
|
||||
image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-6-f39df28-20191023143802
|
||||
|
||||
- container: alpine_39_container
|
||||
image: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.9-WithNode-0fc54a3-20190918214015
|
||||
|
||||
- container: alpine_37_arm64_container
|
||||
image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-alpine-406629a-20191023143847
|
||||
|
||||
- container: ubuntu_1604_arm64_cross_container
|
||||
image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-cfdd435-20191023143847
|
||||
|
||||
- container: ubuntu_1604_arm_cross_container
|
||||
image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-14.04-23cacb0-20191023143847
|
||||
|
||||
- container: ubuntu_1604
|
||||
image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-a50a721-20191023143845
|
||||
|
||||
variables:
|
||||
- template: variables.yml
|
||||
|
@ -83,55 +58,96 @@ variables:
|
|||
- name: _DotNetValidationArtifactsCategory
|
||||
value: .NETCore
|
||||
|
||||
stages:
|
||||
# Windows legs
|
||||
- template: ${{ variables['pipelinesPath'] }}/windows.yml
|
||||
jobs:
|
||||
- template: /eng/pipelines/common/checkout-job.yml
|
||||
|
||||
- template: /eng/pipelines/common/platform-matrix.yml
|
||||
parameters:
|
||||
isOfficialBuild: ${{ and(ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}
|
||||
fullMatrix: ${{ notIn(variables['Build.Reason'], 'PullRequest') }}
|
||||
|
||||
# Linux legs
|
||||
- template: ${{ variables['pipelinesPath'] }}/linux.yml
|
||||
parameters:
|
||||
isOfficialBuild: ${{ and(ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}
|
||||
fullMatrix: ${{ notIn(variables['Build.Reason'], 'PullRequest') }}
|
||||
|
||||
# MacOS legs
|
||||
- template: ${{ variables['pipelinesPath'] }}/macos.yml
|
||||
parameters:
|
||||
isOfficialBuild: ${{ and(ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}
|
||||
fullMatrix: ${{ notIn(variables['Build.Reason'], 'PullRequest') }}
|
||||
|
||||
# FreeBSD leg is only for official builds
|
||||
# - template: ${{ variables['pipelinesPath'] }}/freebsd.yml
|
||||
# parameters:
|
||||
# isOfficialBuild: ${{ and(ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}
|
||||
# fullMatrix: ${{ notIn(variables['Build.Reason'], 'PullRequest') }}
|
||||
|
||||
# Publish and validation steps. Only run in official builds
|
||||
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- template: ${{ variables['pipelinesPath'] }}/pre-publish.yml
|
||||
jobTemplate: /eng/pipelines/libraries/build-job.yml
|
||||
buildConfig: Release
|
||||
platforms:
|
||||
- Linux_rhel6_x64
|
||||
- Windows_NT_x86
|
||||
- ${{ if eq(variables['isFullMatrix'], true) }}:
|
||||
- OSX_x64
|
||||
- Windows_NT_x64
|
||||
- Linux_x64
|
||||
- Linux_arm
|
||||
- Linux_arm64
|
||||
- Linux_musl_x64
|
||||
- Linux_musl_arm64
|
||||
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
|
||||
jobParameters:
|
||||
isOfficialBuild: ${{ variables['isOfficialBuild'] }}
|
||||
isFullMatrix: ${{ variables['isFullMatrix'] }}
|
||||
framework: netcoreapp
|
||||
${{ if eq(variables['isOfficialBuild'], false) }}:
|
||||
runTests: true
|
||||
testScope: innerloop
|
||||
|
||||
- ${{ if eq(variables['isFullMatrix'], false) }}:
|
||||
- template: /eng/pipelines/common/platform-matrix.yml
|
||||
parameters:
|
||||
dependsOn:
|
||||
- WindowsStage
|
||||
- LinuxStage
|
||||
- MacOSStage
|
||||
# - FreeBSD
|
||||
jobTemplate: /eng/pipelines/libraries/build-job.yml
|
||||
buildConfig: Debug
|
||||
platforms:
|
||||
- Windows_NT_x64
|
||||
- OSX_x64
|
||||
- Linux_x64
|
||||
- Linux_musl_x64
|
||||
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
|
||||
jobParameters:
|
||||
isOfficialBuild: ${{ variables['isOfficialBuild'] }}
|
||||
isFullMatrix: ${{ variables['isFullMatrix'] }}
|
||||
testScope: innerloop
|
||||
framework: netcoreapp
|
||||
runTests: true
|
||||
|
||||
- template: /eng/pipelines/common/platform-matrix.yml
|
||||
parameters:
|
||||
jobTemplate: /eng/pipelines/libraries/build-job.yml
|
||||
${{ if eq(variables['isFullMatrix'], false) }}:
|
||||
buildConfig: Debug
|
||||
${{ if eq(variables['isFullMatrix'], true) }}:
|
||||
buildConfig: Release
|
||||
platforms:
|
||||
- WebAssembly_wasm
|
||||
- ${{ if eq(variables['isFullMatrix'], false) }}:
|
||||
- Linux_arm
|
||||
- Linux_arm64
|
||||
- Linux_musl_arm64
|
||||
jobParameters:
|
||||
isOfficialBuild: ${{ variables['isOfficialBuild'] }}
|
||||
framework: netcoreapp
|
||||
|
||||
- template: /eng/pipelines/common/platform-matrix.yml
|
||||
parameters:
|
||||
jobTemplate: /eng/pipelines/libraries/build-job.yml
|
||||
buildConfig: Release
|
||||
platforms:
|
||||
- Windows_NT_x86
|
||||
- ${{ if eq(variables['isFullMatrix'], true) }}:
|
||||
- Windows_NT_x64
|
||||
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
|
||||
jobParameters:
|
||||
isOfficialBuild: ${{ variables['isOfficialBuild'] }}
|
||||
framework: netfx
|
||||
${{ if eq(variables['isOfficialBuild'], false) }}:
|
||||
runTests: true
|
||||
testScope: innerloop
|
||||
|
||||
- template: eng\common\templates\post-build\post-build.yml
|
||||
parameters:
|
||||
validateDependsOn:
|
||||
- PrePublish
|
||||
enableSymbolValidation: false # https://github.com/dotnet/arcade/issues/2871
|
||||
SDLValidationParameters:
|
||||
enable: true
|
||||
params: ' -SourceToolsList @("policheck","credscan")
|
||||
-TsaInstanceURL "$(TsaInstanceURL)"
|
||||
-TsaProjectName "$(TsaProjectName)"
|
||||
-TsaNotificationEmail "$(TsaNotificationEmail)"
|
||||
-TsaCodebaseAdmin "$(TsaCodebaseAdmin)"
|
||||
-TsaBugAreaPath "$(TsaBugAreaPath)"
|
||||
-TsaIterationPath "$(TsaIterationPath)"
|
||||
-TsaRepositoryName "CoreFX"
|
||||
-TsaCodebaseName "CoreFX"
|
||||
-TsaPublish $True'
|
||||
- template: /eng/pipelines/common/platform-matrix.yml
|
||||
parameters:
|
||||
jobTemplate: /eng/pipelines/libraries/build-job.yml
|
||||
${{ if eq(variables['isFullMatrix'], false) }}:
|
||||
buildConfig: Debug
|
||||
${{ if eq(variables['isFullMatrix'], true) }}:
|
||||
buildConfig: Release
|
||||
platforms:
|
||||
- Windows_NT_x64
|
||||
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
|
||||
jobParameters:
|
||||
isOfficialBuild: ${{ variables['isOfficialBuild'] }}
|
||||
framework: allConfigurations
|
||||
${{ if eq(variables['isOfficialBuild'], false) }}:
|
||||
runTests: true
|
||||
|
|
|
@ -0,0 +1,105 @@
|
|||
parameters:
|
||||
buildConfig: ''
|
||||
osGroup: ''
|
||||
archType: ''
|
||||
osSubgroup: ''
|
||||
framework: ''
|
||||
isOfficialBuild: false
|
||||
timeoutInMinutes: 150
|
||||
container: ''
|
||||
steps: []
|
||||
dependsOn: []
|
||||
variables: {}
|
||||
name: ''
|
||||
displayName: ''
|
||||
testScope: ''
|
||||
pool: ''
|
||||
stepName: ''
|
||||
|
||||
jobs:
|
||||
- template: /eng/common/templates/job/job.yml
|
||||
parameters:
|
||||
name: ${{ format('libraries_{0}_{1}_{2}{3}_{4}_{5}', parameters.stepName, parameters.framework, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
|
||||
${{ if eq(parameters.framework, 'netcoreapp') }}:
|
||||
displayName: ${{ format('{0} {1}{2} {3} {4}', parameters.stepName, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
|
||||
${{ if ne(parameters.framework, 'netcoreapp') }}:
|
||||
displayName: ${{ format('{0} {1} {2} {3} {4}', parameters.stepName, parameters.osGroup, parameters.framework, parameters.archType, parameters.buildConfig) }}
|
||||
|
||||
enableTelemetry: ${{ parameters.isOfficialBuild }} # TODO: figure out if it's needed
|
||||
container: ${{ parameters.container }}
|
||||
helixRepo: dotnet/runtime
|
||||
pool: ${{ parameters.pool }}
|
||||
variables:
|
||||
- _BuildConfig: ${{ parameters.buildConfig }}
|
||||
- _msbuildCommonParameters: ''
|
||||
- _stripSymbolsArg: ''
|
||||
- _runtimeOSArg: ''
|
||||
- _portableArg: ''
|
||||
- _finalFrameworkArg: -framework ${{ parameters.framework }}
|
||||
- _buildScript: $(buildScriptFileName)$(scriptExt)
|
||||
- _warnAsErrorArg: ''
|
||||
- _testScopeArg: ''
|
||||
|
||||
- ${{ if ne(parameters.testScope, '') }}:
|
||||
- _testScopeArg: -testscope ${{ parameters.testScope }}
|
||||
|
||||
- ${{ if and(eq(parameters.osGroup, 'Linux'), eq(parameters.osSubGroup, '_rhel6')) }}:
|
||||
- _runtimeOSArg: /p:RuntimeOS=rhel.6
|
||||
- _portableArg: /p:PortableBuild=false
|
||||
|
||||
- ${{ if and(eq(parameters.osGroup, 'Linux'), eq(parameters.osSubGroup, '_musl')) }}:
|
||||
- _runtimeOSArg: /p:RuntimeOS=linux-musl
|
||||
|
||||
- ${{ if and(eq(parameters.osGroup, 'Linux'), eq(parameters.osSubGroup, ''), eq(parameters.archType, 'arm')) }}:
|
||||
- _runtimeOSArg: /p:RuntimeOS=ubuntu.16.04
|
||||
|
||||
- ${{ if and(or(eq(parameters.osGroup, 'Linux'), eq(parameters.osGroup, 'WebAssembly')), ne(parameters.container, '')) }}:
|
||||
- _warnAsErrorArg: '-warnAsError false'
|
||||
|
||||
- ${{ if eq(parameters.osGroup, 'WebAssembly') }}:
|
||||
- _runtimeOSArg: -os ${{ parameters.osGroup }}
|
||||
|
||||
- ${{ if eq(parameters.framework, 'allConfigurations' ) }}:
|
||||
- _finalFrameworkArg: -allConfigurations
|
||||
|
||||
- ${{ if eq(parameters.isOfficialBuild, 'true') }}:
|
||||
- _msbuildCommonParameters: /p:OfficialBuildId=$(Build.BuildNumber)
|
||||
|
||||
# Windows variables
|
||||
- ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
|
||||
- _msbuildCommand: powershell -ExecutionPolicy ByPass -NoProfile eng\common\msbuild.ps1 -warnaserror:0 -ci
|
||||
- _runtimeOSArg: /p:RuntimeOS=win10
|
||||
|
||||
# Non-Windows variables
|
||||
- ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
|
||||
- _msbuildCommand: ./eng/common/msbuild.sh --warnaserror false --ci
|
||||
- _buildScript: ./$(buildScriptFileName)$(scriptExt)
|
||||
- ${{ if eq(parameters.isOfficialBuild, 'true') }}:
|
||||
- _stripSymbolsArg: -stripSymbols
|
||||
|
||||
- _buildArguments: -configuration ${{ parameters.buildConfig }} -ci -arch ${{ parameters.archType }} $(_finalFrameworkArg) $(_stripSymbolsArg) $(_testScopeArg) $(_warnAsErrorArg) $(_runtimeOSArg) $(_portableArg) $(_msbuildCommonParameters)
|
||||
- ${{ parameters.variables }}
|
||||
|
||||
dependsOn:
|
||||
- checkout
|
||||
- ${{ parameters.dependsOn }}
|
||||
workspace:
|
||||
clean: all
|
||||
|
||||
enablePublishBuildArtifacts: true
|
||||
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
|
||||
|
||||
steps:
|
||||
- checkout: none
|
||||
clean: true
|
||||
|
||||
- download: current
|
||||
artifact: Checkout_bundle
|
||||
displayName: Download Checkout.bundle
|
||||
|
||||
- script: |
|
||||
git clone $(Pipeline.Workspace)/Checkout_bundle/Checkout.bundle .
|
||||
git remote set-url origin $(Build.Repository.Uri)
|
||||
displayName: Clone the repository from Checkout.bundle
|
||||
|
||||
- ${{ parameters.steps }}
|
|
@ -0,0 +1,128 @@
|
|||
parameters:
|
||||
buildConfig: ''
|
||||
osGroup: ''
|
||||
osSubgroup: ''
|
||||
archType: ''
|
||||
framework: netcoreapp
|
||||
isOfficialBuild: false
|
||||
timeoutInMinutes: 150
|
||||
preBuildSteps: []
|
||||
container: ''
|
||||
variables: {}
|
||||
pool: ''
|
||||
runTests: false
|
||||
testScope: ''
|
||||
|
||||
jobs:
|
||||
- template: /eng/pipelines/libraries/base-job.yml
|
||||
parameters:
|
||||
buildConfig: ${{ parameters.buildConfig }}
|
||||
osGroup: ${{ parameters.osGroup }}
|
||||
osSubgroup: ${{ parameters.osSubgroup }}
|
||||
archType: ${{ parameters.archType }}
|
||||
framework: ${{ parameters.framework }}
|
||||
isOfficialBuild: ${{ parameters.isOfficialBuild }}
|
||||
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
|
||||
preBuildSteps: ${{ parameters.preBuildSteps }}
|
||||
container: ${{ parameters.container }}
|
||||
pool: ${{ parameters.pool }}
|
||||
testScope: ${{ parameters.testScope }}
|
||||
stepName: Build
|
||||
|
||||
variables:
|
||||
- _skipTestRestoreArg: /p:SkipTestRestore=true
|
||||
- _buildAction: -build
|
||||
- ${{ parameters.variables }}
|
||||
- ${{ if eq(parameters.osGroup, 'WebAssembly') }}:
|
||||
- EMSDK_PATH: $(Build.BinariesDirectory)/emsdk
|
||||
- ${{ if eq(parameters.runTests, true) }}:
|
||||
- _buildAction: -build -buildtests /p:ArchiveTests=true
|
||||
- ${{ if ne(parameters.framework, 'allConfigurations') }}:
|
||||
- _skipTestRestoreArg: /p:SkipTestRestore=false
|
||||
|
||||
steps:
|
||||
- script: $(_buildScript) -restore $(_buildArguments) $(_skipTestRestoreArg)
|
||||
displayName: Restore
|
||||
|
||||
- ${{ if eq(parameters.isOfficialBuild, true) }}:
|
||||
- task: DotNetCoreCLI@2
|
||||
displayName: Restore internal tools
|
||||
condition: and(succeeded(), ne(variables['_skipRestoreInternalTools'], 'true'))
|
||||
inputs:
|
||||
command: restore
|
||||
feedsToUse: config
|
||||
projects: 'eng/common/internal/Tools.csproj'
|
||||
nugetConfigPath: 'eng/internal/NuGet.config'
|
||||
restoreDirectory: '$(Build.SourcesDirectory)\.packages'
|
||||
verbosityRestore: 'normal'
|
||||
externalFeedCredentials: 'dotnet-core-internal-tooling'
|
||||
|
||||
- ${{ if eq(parameters.osGroup, 'OSX') }}:
|
||||
- script: |
|
||||
brew install pkgconfig openssl
|
||||
ln -s /usr/local/opt/openssl/lib/pkgconfig/libcrypto.pc /usr/local/lib/pkgconfig/
|
||||
ln -s /usr/local/opt/openssl/lib/pkgconfig/libssl.pc /usr/local/lib/pkgconfig/
|
||||
ln -s /usr/local/opt/openssl/lib/pkgconfig/openssl.pc /usr/local/lib/pkgconfig/
|
||||
displayName: Install Build Dependencies
|
||||
|
||||
- ${{ if eq(parameters.osGroup, 'WebAssembly') }}:
|
||||
- script: |
|
||||
EMSCRIPTEN_VERSION=1.38.47
|
||||
git clone https://github.com/emscripten-core/emsdk.git $(EMSDK_PATH)
|
||||
cd $(EMSDK_PATH)
|
||||
./emsdk install ${EMSCRIPTEN_VERSION}-upstream
|
||||
./emsdk activate --embedded ${EMSCRIPTEN_VERSION}-upstream
|
||||
displayName: Install Emscripten
|
||||
|
||||
- script: $(_buildScript)
|
||||
$(_buildAction)
|
||||
$(_buildArguments)
|
||||
displayName: Build
|
||||
|
||||
- ${{ if eq(parameters.runTests, false) }}:
|
||||
- task: CopyFiles@2
|
||||
displayName: Prepare ref folder to publish
|
||||
inputs:
|
||||
sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/ref
|
||||
targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/ref
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Prepare runtime folder to publish
|
||||
inputs:
|
||||
sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/runtime
|
||||
targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/runtime
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Prepare testhost folder to publish
|
||||
inputs:
|
||||
sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/testhost
|
||||
targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/testhost
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Prepare artifacts toolset folder to publish
|
||||
inputs:
|
||||
sourceFolder: $(Build.SourcesDirectory)/artifacts/toolset
|
||||
targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/toolset
|
||||
|
||||
- template: /eng/pipelines/common/upload-artifact-step.yml
|
||||
parameters:
|
||||
rootFolder: $(Build.ArtifactStagingDirectory)/artifacts
|
||||
includeRootFolder: false
|
||||
archiveType: $(archiveType)
|
||||
archiveExtension: $(archiveExtension)
|
||||
tarCompression: $(tarCompression)
|
||||
artifactName: ${{ format('libraries_bin_{0}_{1}{2}_{3}_{4}', parameters.framework, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
|
||||
displayName: Build Assets
|
||||
|
||||
- ${{ if eq(parameters.runTests, true) }}:
|
||||
- template: /eng/pipelines/libraries/helix.yml
|
||||
parameters:
|
||||
targetOS: ${{ parameters.osGroup }}
|
||||
archGroup: ${{ parameters.archType }}
|
||||
configuration: ${{ parameters.buildConfig }}
|
||||
helixQueues: ${{ join('+', parameters.helixQueues) }}
|
||||
msbuildScript: $(_msbuildCommand)
|
||||
framework: ${{ parameters.framework }}
|
||||
testScope: ${{ parameters.testScope }}
|
||||
creator: dotnet-bot
|
||||
helixToken: ''
|
|
@ -0,0 +1,65 @@
|
|||
parameters:
|
||||
buildConfig: ''
|
||||
osGroup: ''
|
||||
osSubgroup: ''
|
||||
archType: ''
|
||||
framework: netcoreapp
|
||||
isOfficialBuild: false
|
||||
timeoutInMinutes: 150
|
||||
container: ''
|
||||
publishTestArtifacs: true
|
||||
pool: ''
|
||||
testScope: ''
|
||||
variables: {}
|
||||
runTests: false
|
||||
|
||||
jobs:
|
||||
- template: /eng/pipelines/libraries/base-job.yml
|
||||
parameters:
|
||||
buildConfig: ${{ parameters.buildConfig }}
|
||||
osGroup: ${{ parameters.osGroup }}
|
||||
osSubgroup: ${{ parameters.osSubgroup }}
|
||||
archType: ${{ parameters.archType }}
|
||||
framework: ${{ parameters.framework }}
|
||||
isOfficialBuild: ${{ parameters.isOfficialBuild }}
|
||||
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
|
||||
container: ${{ parameters.container }}
|
||||
pool: ${{ parameters.pool }}
|
||||
testScope: ${{ parameters.testScope }}
|
||||
stepName: Test
|
||||
|
||||
dependsOn:
|
||||
- ${{ format('libraries_Build_{0}_{1}{2}_{3}_{4}', parameters.framework, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
|
||||
|
||||
variables:
|
||||
- _archiveTestsParameter: /p:ArchiveTests=true
|
||||
- _skipTestRestoreArg: /p:SkipTestRestore=false
|
||||
|
||||
- ${{ parameters.variables }}
|
||||
|
||||
steps:
|
||||
- template: /eng/pipelines/common/download-artifact-step.yml
|
||||
parameters:
|
||||
displayName: Build Assets
|
||||
artifactName: ${{ format('libraries_bin_{0}_{1}{2}_{3}_{4}', parameters.framework, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
|
||||
artifactFileName: ${{ format('libraries_bin_{0}_{1}{2}_{3}_{4}', parameters.framework, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}$(archiveExtension)
|
||||
unpackFolder: $(Build.SourcesDirectory)/artifacts
|
||||
|
||||
- script: $(_buildScript) -restore $(_buildArguments) $(_skipTestRestoreArg)
|
||||
displayName: Restore
|
||||
|
||||
- script: $(_buildScript)
|
||||
-buildtests
|
||||
$(_buildArguments)
|
||||
$(_archiveTestsParameter)
|
||||
displayName: Build
|
||||
|
||||
- template: /eng/pipelines/common/upload-artifact-step.yml
|
||||
parameters:
|
||||
rootFolder: $(Build.SourcesDirectory)/artifacts/helix
|
||||
includeRootFolder: true
|
||||
archiveType: $(archiveType)
|
||||
archiveExtension: $(archiveExtension)
|
||||
tarCompression: $(tarCompression)
|
||||
artifactName: ${{ format('libraries_test_assets_{0}_{1}_{2}_{3}', parameters.framework, parameters.osGroup, parameters.archType, parameters.buildConfig) }}
|
||||
displayName: Test Assets
|
|
@ -1,217 +0,0 @@
|
|||
parameters:
|
||||
# Required: TargetOS value to know what script commands to use
|
||||
# Accepted values:
|
||||
# - Windows_NT
|
||||
# - Linux
|
||||
# - OSX
|
||||
# - FreeBSD
|
||||
targetOS: ''
|
||||
|
||||
# Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
|
||||
jobs: []
|
||||
|
||||
# Required: value to specify if the job is comming from an official build to run extra steps and sign binaries
|
||||
# Default: false
|
||||
isOfficialBuild: false
|
||||
|
||||
# EACH JOB SHOULD INCLUDE THE FOLLOWING PROPERTIES (ASIDE FROM THE REQUIRED ONES IN THE JOB SCHEMA)
|
||||
|
||||
# Required: as part of the strategy matrix, the following variables should be defined
|
||||
# _BuildConfig: Debug | Release
|
||||
# _architecture: x64 | x86 | arm | arm64
|
||||
# _framework: (netcoreapp, netfx).
|
||||
# _helixQueues: Windows.Amd64 (Only needed if submitToHelix -> true.) -- Queues should be separated by + if multiple.
|
||||
|
||||
# Required: empty | innerloop | outerloop | all
|
||||
testScope: ''
|
||||
|
||||
# Optional: _publishTests -> Boolean -> Publish test assets to blob storage if true.
|
||||
# Default: false
|
||||
# _publishTests: true | false
|
||||
|
||||
# Required: submitToHelix -> Boolean -> Value to know if it should submit tests payloads to helix.
|
||||
|
||||
# Optional: buildScriptPrefix -> String -> string to append to Unix build script.
|
||||
# buildScriptPrefix: 'HOME=/home/ ' -> 'HOME=/home/ ./$(buildScriptName).sh ...'
|
||||
|
||||
# Optional: buildExtraArguments -> String -> string to append at the end of the build arguments
|
||||
# buildExtraArguments: /p:RuntimeOS=win10 -> '$(buildScriptName).cmd ... /p:RuntimeOS=win10'
|
||||
|
||||
# Optional: customBuildSteps -> Array -> list of steps to run instead of the common build steps.
|
||||
# customBuildSteps:
|
||||
# - script: echo Hello World
|
||||
# displayName: MyScript
|
||||
|
||||
# Optional: preBuildSteps -> Array -> list of steps to be executed before common build steps.
|
||||
# In example, to install build dependencies, or setup an environment.
|
||||
# preBuildSteps:
|
||||
# - script: brew install cmake
|
||||
# displayName: Install Cmake
|
||||
|
||||
# timeoutInMinutes: if a job doesn't define it, we will default it to 150 minutes
|
||||
|
||||
jobs:
|
||||
- ${{ each job in parameters.jobs }}:
|
||||
- template: /eng/common/templates/job/job.yml
|
||||
parameters:
|
||||
variables:
|
||||
|
||||
# pass along job variables
|
||||
- ${{ each variable in job.variables }}:
|
||||
- ${{ if ne(variable.name, '') }}:
|
||||
- name: ${{ variable.name }}
|
||||
value: ${{ variable.value }}
|
||||
- ${{ if ne(variable.group, '') }}:
|
||||
- group: ${{ variable.group }}
|
||||
|
||||
# handle key-value variable syntax.
|
||||
# example:
|
||||
# - [key]: [value]
|
||||
- ${{ if and(eq(variable.name, ''), eq(variable.group, '')) }}:
|
||||
- ${{ each pair in variable }}:
|
||||
- name: ${{ pair.key }}
|
||||
value: ${{ pair.value }}
|
||||
|
||||
- _msbuildCommonParameters: ''
|
||||
- _archiveTestsParameter: ''
|
||||
- _finalFrameworkArg: -framework $(_framework)
|
||||
- _testScopeArg: ''
|
||||
|
||||
- ${{ if ne(parameters.testScope, '') }}:
|
||||
- _testScopeArg: -testscope ${{ parameters.testScope }}
|
||||
|
||||
- ${{ if eq(parameters.isOfficialBuild, 'true') }}:
|
||||
- _msbuildCommonParameters: /p:OfficialBuildId=$(Build.BuildNumber)
|
||||
|
||||
- ${{ if eq(job.submitToHelix, 'true') }}:
|
||||
- _archiveTestsParameter: /p:ArchiveTests=true
|
||||
- ${{ if eq(parameters.isOfficialBuild, 'true') }}:
|
||||
- group: DotNet-HelixApi-Access
|
||||
|
||||
- ${{ if ne(job.frameworkArg, '') }}:
|
||||
- _finalFrameworkArg: ${{ job.frameworkArg }}
|
||||
|
||||
- _args: -configuration $(_BuildConfig) -ci -arch $(_architecture) $(_finalFrameworkArg) $(_archiveTestsParameter) ${{ job.buildExtraArguments }}
|
||||
- _commonArguments: $(_args)
|
||||
|
||||
# Windows variables
|
||||
- ${{ if eq(parameters.targetOS, 'Windows_NT') }}:
|
||||
- _buildScript: $(buildScriptFileName).cmd
|
||||
- _msbuildCommand: powershell -ExecutionPolicy ByPass -NoProfile eng\common\msbuild.ps1 -warnaserror:0 -ci
|
||||
|
||||
# Non-Windows variables
|
||||
- ${{ if ne(parameters.targetOS, 'Windows_NT') }}:
|
||||
- _buildScript: ${{ job.buildScriptPrefix }}./$(buildScriptFileName).sh
|
||||
- _msbuildCommand: ${{ job.buildScriptPrefix }}./eng/common/msbuild.sh --warnaserror false --ci
|
||||
- ${{ if eq(parameters.isOfficialBuild, 'true') }}:
|
||||
- _commonArguments: $(_args) -stripSymbols
|
||||
|
||||
# pass along job properties
|
||||
${{ each property in job }}:
|
||||
${{ if and(ne(property.key, 'job'), ne(property.key, 'variables')) }}:
|
||||
${{ property.key }}: ${{ property.value }}
|
||||
|
||||
# enable helix telemetry -- we only send telemetry during official builds
|
||||
enableTelemetry: ${{ parameters.isOfficialBuild }}
|
||||
helixRepo: dotnet/corefx
|
||||
|
||||
name: ${{ job.job }}
|
||||
workspace:
|
||||
clean: all
|
||||
|
||||
# enabling publish build artifacts, will publish all build logs under /artifacts/log/
|
||||
enablePublishBuildArtifacts: true
|
||||
|
||||
${{ if eq(job.timeoutInMinutes, '') }}:
|
||||
timeoutInMinutes: 150
|
||||
|
||||
steps:
|
||||
- ${{ if ne(job.preBuildSteps[0], '') }}:
|
||||
- ${{ job.preBuildSteps }}
|
||||
|
||||
- script: $(_buildScript) -restore $(_commonArguments)
|
||||
displayName: Restore Build Tools
|
||||
|
||||
- ${{ if eq(parameters.isOfficialBuild, 'true') }}:
|
||||
- task: DotNetCoreCLI@2
|
||||
displayName: Restore internal tools
|
||||
condition: and(succeeded(), ne(variables['_skipRestoreInternalTools'], 'true'))
|
||||
inputs:
|
||||
command: restore
|
||||
feedsToUse: config
|
||||
projects: 'eng/common/internal/Tools.csproj'
|
||||
nugetConfigPath: 'eng/internal/NuGet.config'
|
||||
restoreDirectory: '$(Build.SourcesDirectory)\.packages'
|
||||
verbosityRestore: 'normal'
|
||||
externalFeedCredentials: 'dotnet-core-internal-tooling'
|
||||
|
||||
- ${{ if eq(job.customBuildSteps[0], '') }}:
|
||||
- script: $(_buildScript)
|
||||
-build
|
||||
-buildtests
|
||||
$(_commonArguments)
|
||||
$(_testScopeArg)
|
||||
$(_msbuildCommonParameters)
|
||||
displayName: Build Sources and Tests
|
||||
|
||||
- ${{ if ne(job.customBuildSteps[0], '') }}:
|
||||
- ${{ job.customBuildSteps }}
|
||||
|
||||
- ${{ if eq(job.submitToHelix, 'true') }}:
|
||||
- ${{ if eq(parameters.isOfficialBuild, 'true') }}:
|
||||
- script: $(_msbuildCommand) $(sourcesRoot)/publishTestAssets.proj
|
||||
/p:FilesToPublishPattern=$(Build.SourcesDirectory)/artifacts/helix/**/*.zip
|
||||
/p:AccountKey=$(dotnetfeed-storage-access-key-1)
|
||||
/p:ExpectedFeedUrl=$(_dotnetFeedUrl)
|
||||
/p:OSGroup=${{ parameters.targetOS }}
|
||||
/p:ArchGroup=$(_architecture)
|
||||
/p:ConfigurationGroup=$(_BuildConfig)
|
||||
/p:TargetGroup=$(_framework)
|
||||
/p:OfficialBuildId=$(Build.BuildNumber)
|
||||
/p:ContinuousIntegrationBuild=true
|
||||
/p:AssetManifestFileName=corefx-test-assets.xml
|
||||
/p:ManifestBuildId=$(Build.BuildNumber)
|
||||
/p:ManifestBuildData=Location=$(_dotnetFeedUrl)
|
||||
/p:ManifestBranch=$(Build.SourceBranchName)
|
||||
/p:ManifestCommit=$(Build.SourceVersion)
|
||||
/p:ManifestRepoUri=$(Build.Repository.Uri)
|
||||
displayName: Publish test assets to dotnet-core feed
|
||||
condition: and(succeeded(), eq(variables['_publishTests'], 'true'))
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: Publish test asset manifest to artifacts container
|
||||
inputs:
|
||||
pathToPublish: $(Build.SourcesDirectory)/artifacts/TestAssetsManifests
|
||||
artifactName: $(Agent.Os)_$(Agent.JobName)
|
||||
artifactType: container
|
||||
condition: and(succeeded(), eq(variables['_publishTests'], 'true'))
|
||||
|
||||
- template: /eng/pipelines/libraries/helix.yml
|
||||
parameters:
|
||||
# send tests to helix only on public builds, official scheduled builds or manual official builds.
|
||||
condition: eq(${{ parameters.isOfficialBuild }}, False)
|
||||
targetOS: ${{ parameters.targetOS }}
|
||||
archGroup: $(_architecture)
|
||||
configuration: $(_BuildConfig)
|
||||
helixQueues: $(_helixQueues)
|
||||
msbuildScript: $(_msbuildCommand)
|
||||
framework: $(_framework)
|
||||
testScope: ${{ coalesce(parameters.testScope, 'innerloop') }} # if parameters.testScope is empty use 'innerloop'
|
||||
|
||||
${{ if eq(parameters.isOfficialBuild, 'true') }}:
|
||||
officialBuildId: $(Build.BuildNumber)
|
||||
helixToken: $(HelixApiAccessToken)
|
||||
|
||||
${{ if eq(parameters.isOfficialBuild, 'false') }}:
|
||||
# TODO: SET Creator to the PR owner whenever Azure DevOps supports a good way to retrieve it.
|
||||
creator: dotnet-bot
|
||||
helixToken: ''
|
||||
|
||||
- ${{ if eq(parameters.isOfficialBuild, 'true') }}:
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: Publish packages to artifacts container
|
||||
inputs:
|
||||
pathToPublish: $(Build.SourcesDirectory)/artifacts/packages
|
||||
artifactName: packages
|
||||
artifactType: container
|
||||
condition: and(succeeded(), ne(variables['_skipPublishPackages'], 'true'))
|
|
@ -1,34 +0,0 @@
|
|||
# FreeBSD leg
|
||||
parameters:
|
||||
# Required: value to specify if the job is comming from an official build to run extra steps and sign binaries
|
||||
# Default: false
|
||||
isOfficialBuild: false
|
||||
# Required: value to specify if the full test matrix should be tested
|
||||
# Default: false
|
||||
fullMatrix: false
|
||||
# Optional: value to scope the tests.
|
||||
# Default: empty
|
||||
testScope: ''
|
||||
|
||||
jobs:
|
||||
- template: corefx-base.yml
|
||||
parameters:
|
||||
isOfficialBuild: ${{ parameters.isOfficialBuild }}
|
||||
testScope: ${{ parameters.testScope }}
|
||||
targetOS: FreeBSD
|
||||
jobs:
|
||||
|
||||
- job: FreeBSD
|
||||
strategy:
|
||||
matrix:
|
||||
x64_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: x64
|
||||
_framework: netcoreapp
|
||||
_buildScriptPrefix: 'DotNetCoreSdkDir=/usr/local/dotnet/ DotNetRoot=/usr/local/dotnet/ '
|
||||
|
||||
pool:
|
||||
name: dnceng-freebsd-internal
|
||||
|
||||
buildScriptPrefix: $(_buildScriptPrefix)
|
||||
submitToHelix: false
|
|
@ -0,0 +1,120 @@
|
|||
parameters:
|
||||
jobTemplate: ''
|
||||
variables: {}
|
||||
osGroup: ''
|
||||
osSubgroup: ''
|
||||
archType: ''
|
||||
container: ''
|
||||
pool: ''
|
||||
platform: ''
|
||||
jobParameters: {}
|
||||
|
||||
jobs:
|
||||
- template: ${{ parameters.jobTemplate }}
|
||||
parameters:
|
||||
variables: ${{ parameters.variables }}
|
||||
osGroup: ${{ parameters.osGroup }}
|
||||
osSubgroup: ${{ parameters.osSubgroup }}
|
||||
archType: ${{ parameters.archType }}
|
||||
container: ${{ parameters.container }}
|
||||
pool: ${{ parameters.pool }}
|
||||
helixQueues:
|
||||
|
||||
# Linux arm
|
||||
- ${{ if eq(parameters.platform, 'Linux_arm') }}:
|
||||
- ${{ if eq(parameters.jobParameters.isFullMatrix, true) }}:
|
||||
- \(Debian.9.Arm32.Open\)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-9-helix-arm32v7-74c9941-20190620155841
|
||||
|
||||
# Linux arm64
|
||||
- ${{ if eq(parameters.platform, 'Linux_arm64') }}:
|
||||
- ${{ if eq(parameters.jobParameters.isFullMatrix, true) }}:
|
||||
- \(Ubuntu.1804.ArmArch.Open\)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-helix-arm64v8-a45aeeb-20190620160300
|
||||
|
||||
# Linux musl x64
|
||||
- ${{ if eq(parameters.platform, 'Linux_musl_x64') }}:
|
||||
- ${{ if eq(parameters.jobParameters.isFullMatrix, true) }}:
|
||||
- \(Alpine.310.Amd64.Open\)ubuntu.1604.amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.10-helix-3043688-20190918214010
|
||||
- ${{ if eq(parameters.jobParameters.isFullMatrix, false) }}:
|
||||
- \(Alpine.38.Amd64.Open\)ubuntu.1604.amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.8-helix-09ca40b-20190620184125
|
||||
- \(Alpine.39.Amd64.Open\)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.9-helix-09ca40b-20190620184719
|
||||
- \(Alpine.310.Amd64.Open\)ubuntu.1604.amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.10-helix-3043688-20190918214010
|
||||
|
||||
# Linux musl arm64
|
||||
- ${{ if eq(parameters.platform, 'Linux_musl_arm64') }}:
|
||||
- ${{ if eq(parameters.jobParameters.isFullMatrix, true) }}:
|
||||
- \(Alpine.38.Arm64.Open\)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.8-helix-arm64v8-a45aeeb-20190620184035
|
||||
|
||||
# Linux rhel6 x64
|
||||
- ${{ if eq(parameters.platform, 'Linux_rhel6_x64') }}:
|
||||
- RedHat.6.Amd64.Open
|
||||
|
||||
# Linux x64
|
||||
- ${{ if eq(parameters.platform, 'Linux_x64') }}:
|
||||
- ${{ if eq(parameters.jobParameters.isFullMatrix, true) }}:
|
||||
- Centos.7.Amd64.Open
|
||||
- RedHat.7.Amd64.Open
|
||||
- Debian.9.Amd64.Open
|
||||
- Ubuntu.1604.Amd64.Open
|
||||
- Ubuntu.1804.Amd64.Open
|
||||
- SLES.12.Amd64.Open
|
||||
- SLES.15.Amd64.Open
|
||||
- \(Fedora.29.Amd64.Open\)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-29-helix-09ca40b-20190508143249
|
||||
- \(Ubuntu.1910.Amd64.Open\)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-19.10-helix-amd64-cfcfd50-20191030180623
|
||||
- \(Debian.10.Amd64.Open\)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-10-helix-amd64-7c6abd3-20190620155928
|
||||
- ${{ if eq(parameters.jobParameters.isFullMatrix, false) }}:
|
||||
- Centos.7.Amd64.Open
|
||||
- RedHat.7.Amd64.Open
|
||||
- Debian.9.Amd64.Open
|
||||
- Ubuntu.1604.Amd64.Open
|
||||
- Ubuntu.1804.Amd64.Open
|
||||
- SLES.15.Amd64.Open
|
||||
- \(Fedora.29.Amd64.Open\)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-29-helix-09ca40b-20190508143249
|
||||
|
||||
# OSX x64
|
||||
- ${{ if eq(parameters.platform, 'OSX_x64') }}:
|
||||
- OSX.1013.Amd64.Open
|
||||
- OSX.1014.Amd64.Open
|
||||
|
||||
# Windows_NT x64
|
||||
- ${{ if eq(parameters.platform, 'Windows_NT_x64') }}:
|
||||
# netcoreapp
|
||||
- ${{ if eq(parameters.jobParameters.framework, 'netcoreapp') }}:
|
||||
- ${{ if eq(parameters.jobParameters.isFullMatrix, true) }}:
|
||||
- Windows.7.Amd64.Open
|
||||
- Windows.81.Amd64.Open
|
||||
- Windows.10.Amd64.ServerRS5.Open
|
||||
- Windows.10.Amd64.Server19H1.Open
|
||||
- "`(Windows.Nano.1809.Amd64.Open`)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:nanoserver-1809-helix-amd64-61052b7-20190723211353"
|
||||
- ${{ if eq(parameters.jobParameters.isFullMatrix, false) }}:
|
||||
- Windows.7.Amd64.Open
|
||||
- Windows.81.Amd64.Open
|
||||
- Windows.10.Amd64.Server19H1.ES.Open
|
||||
- "`(Windows.Nano.1809.Amd64.Open`)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:nanoserver-1809-helix-amd64-61052b7-20190723211353"
|
||||
|
||||
# NETFX
|
||||
- ${{ if eq(parameters.jobParameters.framework, 'netfx') }}:
|
||||
- Windows.10.Amd64.Client19H1.Open
|
||||
|
||||
# AllConfigurations
|
||||
- ${{ if eq(parameters.jobParameters.framework, 'allConfigurations') }}:
|
||||
- Windows.10.Amd64.Server19H1.Open
|
||||
|
||||
# Windows_NT x86
|
||||
- ${{ if eq(parameters.platform, 'Windows_NT_x86') }}:
|
||||
# netcoreapp
|
||||
- ${{ if eq(parameters.jobParameters.framework, 'netcoreapp') }}:
|
||||
- ${{ if eq(parameters.jobParameters.isFullMatrix, true) }}:
|
||||
- Windows.7.Amd64.Open
|
||||
- Windows.81.Amd64.Open
|
||||
- Windows.10.Amd64.ServerRS5.Open
|
||||
- Windows.10.Amd64.Server19H1.Open
|
||||
- ${{ if eq(parameters.jobParameters.isFullMatrix, false) }}:
|
||||
- Windows.7.Amd64.Open
|
||||
- Windows.81.Amd64.Open
|
||||
- Windows.10.Amd64.Server19H1.ES.Open
|
||||
|
||||
# NETFX
|
||||
- ${{ if eq(parameters.jobParameters.framework, 'netfx') }}:
|
||||
- Windows.10.Amd64.Client19H1.Open
|
||||
|
||||
${{ insert }}: ${{ parameters.jobParameters }}
|
|
@ -4,10 +4,8 @@ parameters:
|
|||
creator: ''
|
||||
framework: ''
|
||||
helixQueues: ''
|
||||
helixToken: ''
|
||||
msbuildScript: ''
|
||||
targetOS: ''
|
||||
officialBuildId: ''
|
||||
testScope: 'innerloop' # innerloop | outerloop | all
|
||||
condition: always()
|
||||
|
||||
|
@ -22,9 +20,7 @@ steps:
|
|||
/p:TargetGroup=${{ parameters.framework }}
|
||||
/p:HelixTargetQueues=${{ parameters.helixQueues }}
|
||||
/p:HelixBuild=$(Build.BuildNumber)
|
||||
/p:HelixAccessToken=${{ parameters.helixToken }}
|
||||
/p:Creator=${{ parameters.creator }}
|
||||
/p:OfficialBuildId=${{ parameters.officialBuildId }}
|
||||
/bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/SendToHelix.binlog
|
||||
displayName: Send to Helix
|
||||
condition: and(succeeded(), ${{ parameters.condition }})
|
||||
|
|
|
@ -1,195 +0,0 @@
|
|||
# Linux legs
|
||||
parameters:
|
||||
# Required: value to specify if the job is comming from an official build to run extra steps and sign binaries
|
||||
# Default: false
|
||||
isOfficialBuild: false
|
||||
# Required: value to specify if the full test matrix should be tested
|
||||
# Default: false
|
||||
fullMatrix: false
|
||||
# Optional: value to scope the tests.
|
||||
# Default: empty
|
||||
testScope: ''
|
||||
|
||||
stages:
|
||||
- stage: LinuxStage
|
||||
displayName: Linux
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: corefx-base.yml
|
||||
parameters:
|
||||
isOfficialBuild: ${{ parameters.isOfficialBuild }}
|
||||
testScope: ${{ parameters.testScope }}
|
||||
targetOS: Linux
|
||||
jobs:
|
||||
|
||||
# Legs with Helix testing
|
||||
- job: LinuxTest
|
||||
displayName: Build
|
||||
strategy:
|
||||
matrix:
|
||||
# Run RedHat6 in release mode on CI to cover Release configuration differences
|
||||
RedHat6_x64_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: x64
|
||||
_framework: netcoreapp
|
||||
_buildScriptPrefix: ''
|
||||
_buildExtraArguments: /p:RuntimeOS=rhel.6 /p:PortableBuild=false
|
||||
_dockerContainer: centos6_container
|
||||
_helixQueues: $(redhatHelixQueue)
|
||||
_publishTests: ${{ parameters.fullMatrix }}
|
||||
|
||||
${{ if eq(parameters.fullMatrix, 'false') }}:
|
||||
x64_Debug:
|
||||
_BuildConfig: Debug
|
||||
_architecture: x64
|
||||
_framework: netcoreapp
|
||||
_helixQueues: $(linuxDefaultQueues)
|
||||
_dockerContainer: centos7_container
|
||||
_buildScriptPrefix: ''
|
||||
_buildExtraArguments: ''
|
||||
|
||||
musl_x64_Debug:
|
||||
_BuildConfig: Debug
|
||||
_architecture: x64
|
||||
_framework: netcoreapp
|
||||
_helixQueues: $(alpineQueues)
|
||||
_dockerContainer: alpine_39_container
|
||||
_buildScriptPrefix: ''
|
||||
_buildExtraArguments: /p:RuntimeOS=linux-musl
|
||||
|
||||
${{ if eq(parameters.fullMatrix, 'true') }}:
|
||||
x64_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: x64
|
||||
_framework: netcoreapp
|
||||
_helixQueues: $(linuxDefaultQueues)
|
||||
_dockerContainer: centos7_container
|
||||
_buildScriptPrefix: ''
|
||||
_buildExtraArguments: ''
|
||||
_publishTests: true
|
||||
|
||||
musl_x64_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: x64
|
||||
_framework: netcoreapp
|
||||
_helixQueues: $(alpineQueues)
|
||||
_dockerContainer: alpine_39_container
|
||||
_buildScriptPrefix: ''
|
||||
_buildExtraArguments: /p:RuntimeOS=linux-musl
|
||||
_publishTests: true
|
||||
|
||||
arm_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: arm
|
||||
_framework: netcoreapp
|
||||
_helixQueues: $(linuxArmQueues)
|
||||
_dockerContainer: ubuntu_1604_arm_cross_container
|
||||
_buildScriptPrefix: 'ROOTFS_DIR=/crossrootfs/arm '
|
||||
_buildExtraArguments: -warnAsError false
|
||||
_publishTests: true
|
||||
|
||||
musl_arm64_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: arm64
|
||||
_framework: netcoreapp
|
||||
_helixQueues: $(alpineArm64Queues)
|
||||
_dockerContainer: alpine_37_arm64_container
|
||||
_buildScriptPrefix: 'ROOTFS_DIR=/crossrootfs/arm64 '
|
||||
_buildExtraArguments: -warnAsError false /p:RuntimeOS=linux-musl
|
||||
_publishTests: true
|
||||
|
||||
arm64_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: arm64
|
||||
_framework: netcoreapp
|
||||
_helixQueues: $(linuxArm64Queues)
|
||||
_dockerContainer: ubuntu_1604_arm64_cross_container
|
||||
_buildScriptPrefix: 'ROOTFS_DIR=/crossrootfs/arm64 '
|
||||
_buildExtraArguments: -warnAsError false
|
||||
_publishTests: true
|
||||
|
||||
pool:
|
||||
name: Hosted Ubuntu 1604
|
||||
|
||||
container: $[ variables['_dockerContainer'] ]
|
||||
buildScriptPrefix: $(_buildScriptPrefix)
|
||||
buildExtraArguments: $(_buildExtraArguments)
|
||||
|
||||
submitToHelix: true
|
||||
# Temporary till we reduced workloads on ARM64
|
||||
timeoutInMinutes: 240
|
||||
|
||||
variables:
|
||||
- redhatHelixQueue: RedHat.6.Amd64.Open
|
||||
|
||||
- ${{ if eq(parameters.fullMatrix, 'false') }}:
|
||||
- linuxDefaultQueues: Centos.7.Amd64.Open+RedHat.7.Amd64.Open+Debian.9.Amd64.Open+Ubuntu.1604.Amd64.Open+Ubuntu.1804.Amd64.Open+SLES.15.Amd64.Open+\(Fedora.29.Amd64.Open\)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-29-helix-09ca40b-20190508143249
|
||||
- alpineQueues: \(Alpine.310.Amd64.Open\)ubuntu.1604.amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.10-helix-3043688-20190918214010
|
||||
|
||||
- ${{ if eq(parameters.fullMatrix, 'true') }}:
|
||||
- linuxDefaultQueues: Centos.7.Amd64.Open+RedHat.7.Amd64.Open+Debian.9.Amd64.Open+Ubuntu.1604.Amd64.Open+Ubuntu.1804.Amd64.Open+SLES.12.Amd64.Open+SLES.15.Amd64.Open+\(Fedora.29.Amd64.Open\)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-29-helix-09ca40b-20190508143249+\(Ubuntu.1910.Amd64.Open\)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-19.10-helix-amd64-cfcfd50-20191030180623+\(Debian.10.Amd64.Open\)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-10-helix-amd64-7c6abd3-20190620155928
|
||||
- linuxArmQueues: \(Debian.9.Arm32.Open\)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-9-helix-arm32v7-74c9941-20190620155841
|
||||
- alpineQueues: \(Alpine.38.Amd64.Open\)ubuntu.1604.amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.8-helix-09ca40b-20190620184125+\(Alpine.39.Amd64.Open\)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.9-helix-09ca40b-20190620184719+\(Alpine.310.Amd64.Open\)ubuntu.1604.amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.10-helix-3043688-20190918214010
|
||||
- alpineArm64Queues: \(Alpine.38.Arm64.Open\)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.8-helix-arm64v8-a45aeeb-20190620184035
|
||||
- linuxArm64Queues: \(Ubuntu.1804.ArmArch.Open\)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-helix-arm64v8-a45aeeb-20190620160300
|
||||
|
||||
# Legs without helix testing
|
||||
# Don't run these legs in outerloop builds
|
||||
- ${{ if and(ne(parameters.testScope, 'outerloop'), ne(parameters.testScope, 'all')) }}:
|
||||
- job: LinuxNoTest
|
||||
displayName: Build
|
||||
strategy:
|
||||
matrix:
|
||||
wasm_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: wasm
|
||||
_framework: netcoreapp
|
||||
_dockerContainer: ubuntu_1604
|
||||
_emsdkPath: $(Build.BinariesDirectory)/emsdk
|
||||
_buildScriptPrefix: 'EMSDK_PATH=$(_emsdkPath) '
|
||||
_buildExtraArguments: -os WebAssembly -warnAsError false
|
||||
_installEmscripten: true
|
||||
|
||||
# Only run these legs in PRs.
|
||||
${{ if eq(parameters.fullMatrix, 'false') }}:
|
||||
arm_Debug:
|
||||
_BuildConfig: Debug
|
||||
_architecture: arm
|
||||
_framework: netcoreapp
|
||||
_buildExtraArguments: /p:RuntimeOS=ubuntu.16.04 -warnAsError false
|
||||
_buildScriptPrefix: 'ROOTFS_DIR=/crossrootfs/arm '
|
||||
_dockerContainer: ubuntu_1604_arm_cross_container
|
||||
|
||||
musl_arm64_Debug:
|
||||
_BuildConfig: Debug
|
||||
_architecture: arm64
|
||||
_framework: netcoreapp
|
||||
_dockerContainer: alpine_37_arm64_container
|
||||
_buildScriptPrefix: 'ROOTFS_DIR=/crossrootfs/arm64 '
|
||||
_buildExtraArguments: -warnAsError false /p:RuntimeOS=linux-musl
|
||||
|
||||
arm64_Debug:
|
||||
_BuildConfig: Debug
|
||||
_architecture: arm64
|
||||
_framework: netcoreapp
|
||||
_dockerContainer: ubuntu_1604_arm64_cross_container
|
||||
_buildScriptPrefix: 'ROOTFS_DIR=/crossrootfs/arm64 '
|
||||
_buildExtraArguments: --warnAsError false
|
||||
|
||||
preBuildSteps:
|
||||
- script: |
|
||||
EMSCRIPTEN_VERSION=1.38.47
|
||||
git clone https://github.com/emscripten-core/emsdk.git $(_emsdkPath)
|
||||
cd $(_emsdkPath)
|
||||
./emsdk install ${EMSCRIPTEN_VERSION}-upstream
|
||||
./emsdk activate --embedded ${EMSCRIPTEN_VERSION}-upstream
|
||||
displayName: Install Emscripten
|
||||
condition: and(succeeded(), eq(variables['_installEmscripten'], 'true'))
|
||||
|
||||
pool:
|
||||
name: Hosted Ubuntu 1604
|
||||
|
||||
container: $[ variables['_dockerContainer'] ]
|
||||
buildExtraArguments: $(_buildExtraArguments)
|
||||
buildScriptPrefix: $(_buildScriptPrefix)
|
||||
submitToHelix: false
|
|
@ -1,59 +0,0 @@
|
|||
# macOS legs
|
||||
parameters:
|
||||
# Required: value to specify if the job is comming from an official build to run extra steps and sign binaries
|
||||
# Default: false
|
||||
isOfficialBuild: false
|
||||
# Required: value to specify if the full test matrix should be tested
|
||||
# Default: false
|
||||
fullMatrix: false
|
||||
# Optional: value to scope the tests.
|
||||
# Default: empty
|
||||
testScope: ''
|
||||
|
||||
stages:
|
||||
- stage: MacOSStage
|
||||
displayName: MacOS
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: corefx-base.yml
|
||||
parameters:
|
||||
isOfficialBuild: ${{ parameters.isOfficialBuild }}
|
||||
testScope: ${{ parameters.testScope }}
|
||||
targetOS: OSX
|
||||
jobs:
|
||||
|
||||
# Legs with Helix testing
|
||||
- job: MacOS
|
||||
displayName: Build
|
||||
strategy:
|
||||
matrix:
|
||||
${{ if eq(parameters.fullMatrix, 'false') }}:
|
||||
x64_Debug:
|
||||
_BuildConfig: Debug
|
||||
_architecture: x64
|
||||
_framework: netcoreapp
|
||||
_helixQueues: $(macOSQueues)
|
||||
|
||||
${{ if eq(parameters.fullMatrix, 'true') }}:
|
||||
x64_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: x64
|
||||
_framework: netcoreapp
|
||||
_helixQueues: $(macOSQueues)
|
||||
_publishTests: true
|
||||
|
||||
pool:
|
||||
name: Hosted macOS
|
||||
|
||||
preBuildSteps:
|
||||
- script: |
|
||||
brew install pkgconfig openssl
|
||||
ln -s /usr/local/opt/openssl/lib/pkgconfig/libcrypto.pc /usr/local/lib/pkgconfig/
|
||||
ln -s /usr/local/opt/openssl/lib/pkgconfig/libssl.pc /usr/local/lib/pkgconfig/
|
||||
ln -s /usr/local/opt/openssl/lib/pkgconfig/openssl.pc /usr/local/lib/pkgconfig/
|
||||
displayName: Install Build Dependencies
|
||||
|
||||
submitToHelix: true
|
||||
|
||||
variables:
|
||||
- macOSQueues: OSX.1013.Amd64.Open+OSX.1014.Amd64.Open
|
|
@ -6,52 +6,75 @@ schedules:
|
|||
branches:
|
||||
include:
|
||||
- master
|
||||
- release/3.0
|
||||
|
||||
resources:
|
||||
containers:
|
||||
- container: centos7_container
|
||||
image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-f39df28-20191023143754
|
||||
|
||||
- container: centos6_container
|
||||
image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-6-f39df28-20191023143802
|
||||
|
||||
- container: alpine_39_container
|
||||
image: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.9-WithNode-0fc54a3-20190918214015
|
||||
|
||||
- container: alpine_37_arm64_container
|
||||
image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-alpine-406629a-20191023143847
|
||||
|
||||
- container: ubuntu_1604_arm64_cross_container
|
||||
image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-cfdd435-20191023143847
|
||||
|
||||
- container: ubuntu_1604_arm_cross_container
|
||||
image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-14.04-23cacb0-20191023143847
|
||||
- release/*.*
|
||||
|
||||
variables:
|
||||
- template: variables.yml
|
||||
|
||||
stages:
|
||||
# Windows outerloop legs
|
||||
- ${{ if or(endsWith(variables['Build.DefinitionName'], 'windows'), endsWith(variables['Build.DefinitionName'], 'outerloop')) }}:
|
||||
- template: windows.yml
|
||||
parameters:
|
||||
isOfficialBuild: ${{ and(ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}
|
||||
fullMatrix: ${{ notIn(variables['Build.Reason'], 'PullRequest') }}
|
||||
testScope: outerloop
|
||||
jobs:
|
||||
- template: /eng/pipelines/common/checkout-job.yml
|
||||
|
||||
# Linux outerloop legs
|
||||
- ${{ if or(endsWith(variables['Build.DefinitionName'], 'linux'), endsWith(variables['Build.DefinitionName'], 'outerloop')) }}:
|
||||
- template: linux.yml
|
||||
parameters:
|
||||
isOfficialBuild: ${{ and(ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}
|
||||
fullMatrix: ${{ notIn(variables['Build.Reason'], 'PullRequest') }}
|
||||
- template: /eng/pipelines/common/platform-matrix.yml
|
||||
parameters:
|
||||
jobTemplate: /eng/pipelines/libraries/build-job.yml
|
||||
buildConfig: Release
|
||||
platforms:
|
||||
- ${{ if eq(variables['includeWindowsOuterloop'], true) }}:
|
||||
- Windows_NT_x86
|
||||
- ${{ if eq(variables['isFullMatrix'], true) }}:
|
||||
- Windows_NT_x64
|
||||
- ${{ if eq(variables['includeLinuxOuterloop'], true) }}:
|
||||
- Linux_rhel6_x64
|
||||
- ${{ if eq(variables['isFullMatrix'], true) }}:
|
||||
- Linux_x64
|
||||
- Linux_arm
|
||||
- Linux_arm64
|
||||
- Linux_musl_x64
|
||||
- Linux_musl_arm64
|
||||
- ${{ if and(eq(variables['includeOsxOuterloop'], true), eq(variables['isFullMatrix'], true)) }}:
|
||||
- OSX_x64
|
||||
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
|
||||
jobParameters:
|
||||
isOfficialBuild: ${{ variables['isOfficialBuild'] }}
|
||||
isFullMatrix: ${{ variables['isFullMatrix'] }}
|
||||
framework: netcoreapp
|
||||
runTests: true
|
||||
testScope: outerloop
|
||||
|
||||
- ${{ if eq(variables['isFullMatrix'], false) }}:
|
||||
- template: /eng/pipelines/common/platform-matrix.yml
|
||||
parameters:
|
||||
jobTemplate: /eng/pipelines/libraries/build-job.yml
|
||||
buildConfig: Debug
|
||||
platforms:
|
||||
- ${{ if eq(variables['includeWindowsOuterloop'], true) }}:
|
||||
- Windows_NT_x86
|
||||
- ${{ if eq(variables['includeLinuxOuterloop'], true) }}:
|
||||
- Linux_x64
|
||||
- Linux_musl_x64
|
||||
- ${{ if eq(variables['includeOsxOuterloop'], true) }}:
|
||||
- OSX_x64
|
||||
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
|
||||
jobParameters:
|
||||
isOfficialBuild: ${{ variables['isOfficialBuild'] }}
|
||||
isFullMatrix: ${{ variables['isFullMatrix'] }}
|
||||
framework: netcoreapp
|
||||
runTests: true
|
||||
testScope: outerloop
|
||||
|
||||
# MacOS outerloop legs
|
||||
- ${{ if or(endsWith(variables['Build.DefinitionName'], 'osx'), endsWith(variables['Build.DefinitionName'], 'outerloop')) }}:
|
||||
- template: macos.yml
|
||||
- ${{ if eq(variables['includeWindowsOuterloop'], true) }}:
|
||||
- template: /eng/pipelines/common/platform-matrix.yml
|
||||
parameters:
|
||||
isOfficialBuild: ${{ and(ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}
|
||||
fullMatrix: ${{ notIn(variables['Build.Reason'], 'PullRequest') }}
|
||||
testScope: outerloop
|
||||
jobTemplate: /eng/pipelines/libraries/build-job.yml
|
||||
buildConfig: Release
|
||||
platforms:
|
||||
- Windows_NT_x86
|
||||
- ${{ if eq(variables['isFullMatrix'], true) }}:
|
||||
- Windows_NT_x64
|
||||
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
|
||||
jobParameters:
|
||||
isOfficialBuild: ${{ variables['isOfficialBuild'] }}
|
||||
isFullMatrix: ${{ variables['isFullMatrix'] }}
|
||||
framework: netfx
|
||||
runTests: true
|
||||
testScope: outerloop
|
|
@ -1,88 +0,0 @@
|
|||
parameters:
|
||||
buildConfiguration: Release
|
||||
dependsOn: []
|
||||
|
||||
stages:
|
||||
- stage: PrePublish
|
||||
displayName: Pre-publish
|
||||
dependsOn: ${{ parameters.dependsOn }}
|
||||
jobs:
|
||||
- template: /eng/common/templates/jobs/jobs.yml
|
||||
parameters:
|
||||
enableMicrobuild: true
|
||||
enablePublishUsingPipelines: $(_PublishUsingPipelines)
|
||||
enablePublishBuildAssets: true
|
||||
enablePublishBuildArtifacts: true
|
||||
jobs:
|
||||
- job: SignAndPrepare
|
||||
displayName: Sign and prepare to publish
|
||||
timeoutInMinutes: 160
|
||||
|
||||
pool:
|
||||
name: NetCoreInternal-Pool
|
||||
queue: buildpool.windows.10.amd64.vs2017
|
||||
|
||||
workspace:
|
||||
clean: all
|
||||
|
||||
variables:
|
||||
- group: DotNet-Versions-Publish
|
||||
- _artifactsDir: $(Build.SourcesDirectory)/artifacts
|
||||
- _TeamName: DotNetCore
|
||||
- _SignType: real
|
||||
- _BuildConfig: ${{ parameters.buildConfiguration }}
|
||||
|
||||
steps:
|
||||
- powershell: |
|
||||
$prefix = "refs/heads/"
|
||||
$branch = "$(Build.SourceBranch)"
|
||||
$branchName = $branch
|
||||
if ($branchName.StartsWith($prefix))
|
||||
{
|
||||
$branchName = $branchName.Substring($prefix.Length)
|
||||
}
|
||||
Write-Host "For Build.SourceBranch $branch, FullBranchName is $branchName"
|
||||
Write-Host "##vso[task.setvariable variable=FullBranchName;]$branchName"
|
||||
displayName: Find true SourceBranchName
|
||||
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: Download packages to publish
|
||||
inputs:
|
||||
artifactName: packages
|
||||
downloadPath: $(_artifactsDir)
|
||||
|
||||
- script: $(buildScriptFileName).cmd
|
||||
-restore
|
||||
-ci
|
||||
displayName: Restore tools
|
||||
|
||||
- script: $(buildScriptFileName).cmd
|
||||
-sign
|
||||
-ci
|
||||
-configuration $(_BuildConfig)
|
||||
/p:DotNetSignType=$(_SignType)
|
||||
/p:OfficialBuildId=$(Build.BuildNumber)
|
||||
displayName: Sign packages
|
||||
|
||||
- script: $(buildScriptFileName).cmd
|
||||
-publish
|
||||
-ci
|
||||
-configuration $(_BuildConfig)
|
||||
/p:DotNetPublishUsingPipelines=$(_PublishUsingPipelines)
|
||||
/p:DotNetArtifactsCategory=$(_DotNetArtifactsCategory)
|
||||
/p:DotNetPublishBlobFeedUrl=$(_dotnetFeedUrl)
|
||||
/p:DotNetPublishToBlobFeed=true
|
||||
/p:DotNetPublishBlobFeedKey=$(dotnetfeed-storage-access-key-1)
|
||||
/p:OfficialBuildId=$(Build.BuildNumber)
|
||||
/bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/PublishToArtifacts.binlog
|
||||
displayName: Publish to artifacts and produce manifest
|
||||
|
||||
- script: powershell -ExecutionPolicy ByPass -NoProfile eng\common\msbuild.ps1 $(sourcesRoot)/build.proj
|
||||
-warnaserror:0 -ci
|
||||
/t:UpdatePublishedVersions
|
||||
/p:GitHubAuthToken=$(AccessToken-dotnet-build-bot-public-repo)
|
||||
/p:VersionsRepoOwner=dotnet
|
||||
/p:VersionsRepo=versions
|
||||
/p:VersionsRepoPath=build-info/dotnet/corefx/$(FullBranchName)
|
||||
/p:ShippedNuGetPackageGlobPath=$(_artifactsDir)/packages/**/*.nupkg
|
||||
displayName: Update dotnet/versions
|
|
@ -0,0 +1,64 @@
|
|||
parameters:
|
||||
buildConfig: ''
|
||||
osGroup: ''
|
||||
osSubgroup: ''
|
||||
archType: ''
|
||||
framework: netcoreapp
|
||||
isOfficialBuild: false
|
||||
timeoutInMinutes: 150
|
||||
pool: ''
|
||||
testScope: ''
|
||||
helixQueues: []
|
||||
dependsOnBuildConfiguration: Debug
|
||||
variables: {}
|
||||
|
||||
jobs:
|
||||
- template: /eng/pipelines/libraries/base-job.yml
|
||||
parameters:
|
||||
buildConfig: ${{ parameters.buildConfig }}
|
||||
osGroup: ${{ parameters.osGroup }}
|
||||
osSubgroup: ${{ parameters.osSubgroup }}
|
||||
archType: ${{ parameters.archType }}
|
||||
framework: ${{ parameters.framework }}
|
||||
isOfficialBuild: ${{ parameters.isOfficialBuild }}
|
||||
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
|
||||
container: '' # we just send to helix, no need to use a container.
|
||||
pool: ${{ parameters.pool }}
|
||||
stepName: Run
|
||||
|
||||
dependsOn:
|
||||
- ${{ format('libraries_Build_{0}_{1}{2}_{3}_{4}', parameters.framework, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
|
||||
- ${{ format('libraries_Test_{0}_{1}_x64_{2}', parameters.framework, parameters.osGroup, parameters.dependsOnBuildConfiguration) }}
|
||||
|
||||
variables:
|
||||
- _archiveTestsParameter: /p:ArchiveTests=true
|
||||
- _skipTestRestoreArg: /p:SkipTestRestore=false
|
||||
- ${{ parameters.variables }}
|
||||
|
||||
steps:
|
||||
- template: /eng/pipelines/common/download-artifact-step.yml
|
||||
parameters:
|
||||
displayName: Build Assets
|
||||
artifactName: ${{ format('libraries_bin_{0}_{1}{2}_{3}_{4}', parameters.framework, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
|
||||
artifactFileName: ${{ format('libraries_bin_{0}_{1}{2}_{3}_{4}', parameters.framework, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}$(archiveExtension)
|
||||
unpackFolder: $(Build.SourcesDirectory)/artifacts
|
||||
|
||||
- template: /eng/pipelines/common/download-artifact-step.yml
|
||||
parameters:
|
||||
displayName: Test Assets
|
||||
cleanUnpackFolder: false
|
||||
unpackFolder: $(Build.SourcesDirectory)/artifacts
|
||||
artifactName: ${{ format('libraries_test_assets_{0}_{1}_x64_{2}', parameters.framework, parameters.osGroup, parameters.dependsOnBuildConfiguration) }}
|
||||
artifactFileName: ${{ format('libraries_test_assets_{0}_{1}_x64_{2}', parameters.framework, parameters.osGroup, parameters.dependsOnBuildConfiguration) }}$(archiveExtension)
|
||||
|
||||
- template: /eng/pipelines/libraries/helix.yml
|
||||
parameters:
|
||||
targetOS: ${{ parameters.osGroup }}
|
||||
archGroup: ${{ parameters.archType }}
|
||||
configuration: ${{ parameters.buildConfig }}
|
||||
helixQueues: ${{ join('+', parameters.helixQueues) }}
|
||||
msbuildScript: $(_msbuildCommand)
|
||||
framework: ${{ parameters.framework }}
|
||||
testScope: ${{ parameters.testScope }}
|
||||
creator: dotnet-bot
|
||||
helixToken: ''
|
|
@ -5,3 +5,13 @@ variables:
|
|||
value: $(Build.SourcesDirectory)/src/libraries
|
||||
- name: pipelinesPath
|
||||
value: /eng/pipelines/libraries
|
||||
- name: isOfficialBuild
|
||||
value: ${{ and(ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}
|
||||
- name: isFullMatrix
|
||||
value: ${{ notIn(variables['Build.Reason'], 'PullRequest') }}
|
||||
- name: includeWindowsOuterloop
|
||||
value: ${{ or(endsWith(variables['Build.DefinitionName'], 'windows'), endsWith(variables['Build.DefinitionName'], 'outerloop')) }}
|
||||
- name: includeLinuxOuterloop
|
||||
value: ${{ or(endsWith(variables['Build.DefinitionName'], 'linux'), endsWith(variables['Build.DefinitionName'], 'outerloop')) }}
|
||||
- name: includeOsxOuterloop
|
||||
value: ${{ or(endsWith(variables['Build.DefinitionName'], 'osx'), endsWith(variables['Build.DefinitionName'], 'outerloop')) }}
|
||||
|
|
|
@ -1,162 +0,0 @@
|
|||
# Windows legs
|
||||
parameters:
|
||||
# Required: value to specify if the job is comming from an official build to run extra steps and sign binaries
|
||||
# Default: false
|
||||
isOfficialBuild: false
|
||||
# Required: value to specify if the full test matrix should be tested
|
||||
# Default: false
|
||||
fullMatrix: false
|
||||
# Optional: value to scope the tests.
|
||||
# Default: empty
|
||||
testScope: ''
|
||||
|
||||
stages:
|
||||
- stage: WindowsStage
|
||||
displayName: Windows
|
||||
dependsOn: []
|
||||
jobs:
|
||||
|
||||
- template: corefx-base.yml
|
||||
parameters:
|
||||
isOfficialBuild: ${{ parameters.isOfficialBuild }}
|
||||
testScope: ${{ parameters.testScope }}
|
||||
targetOS: Windows_NT
|
||||
jobs:
|
||||
|
||||
# Legs with Helix testing
|
||||
- job: WindowsTest
|
||||
displayName: Build
|
||||
strategy:
|
||||
matrix:
|
||||
# PR CI Matrix
|
||||
${{ if eq(parameters.fullMatrix, 'false') }}:
|
||||
x64_Debug:
|
||||
_BuildConfig: Debug
|
||||
_architecture: x64
|
||||
_framework: netcoreapp
|
||||
_helixQueues: $(netcoreappWindowsQueues)+$(nanoQueues)
|
||||
|
||||
x86_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: x86
|
||||
_framework: netcoreapp
|
||||
_helixQueues: $(netcoreappWindowsQueues)
|
||||
|
||||
NETFX_x86_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: x86
|
||||
_framework: netfx
|
||||
_helixQueues: $(netFxQueues)
|
||||
|
||||
# Full test matrix
|
||||
${{ if eq(parameters.fullMatrix, 'true') }}:
|
||||
x64_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: x64
|
||||
_framework: netcoreapp
|
||||
_helixQueues: $(netcoreappWindowsQueues)+$(nanoQueues)
|
||||
_publishTests: true
|
||||
|
||||
x86_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: x86
|
||||
_framework: netcoreapp
|
||||
_helixQueues: $(netcoreappWindowsQueues)
|
||||
_publishTests: true
|
||||
|
||||
NETFX_x86_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: x86
|
||||
_framework: netfx
|
||||
_helixQueues: $(netFxQueues)
|
||||
_skipPublishPackages: true # In NETFX leg we don't produce packages
|
||||
|
||||
NETFX_x64_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: x64
|
||||
_framework: netfx
|
||||
_helixQueues: $(netFxQueues)
|
||||
_skipPublishPackages: true # In NETFX leg we don't produce packages
|
||||
|
||||
pool:
|
||||
name: Hosted VS2017
|
||||
|
||||
submitToHelix: true
|
||||
buildExtraArguments: /p:RuntimeOS=win10
|
||||
|
||||
variables:
|
||||
- nanoQueues: "`(Windows.Nano.1809.Amd64.Open`)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:nanoserver-1809-helix-amd64-61052b7-20190723211353"
|
||||
- netFxQueues: Windows.10.Amd64.Client19H1.Open
|
||||
|
||||
- ${{ if eq(parameters.fullMatrix, 'false') }}:
|
||||
- netcoreappWindowsQueues: Windows.7.Amd64.Open+Windows.81.Amd64.Open+Windows.10.Amd64.Server19H1.ES.Open
|
||||
|
||||
- ${{ if eq(parameters.fullMatrix, 'true') }}:
|
||||
- netcoreappWindowsQueues: Windows.7.Amd64.Open+Windows.81.Amd64.Open+Windows.10.Amd64.ServerRS5.Open+Windows.10.Amd64.Server19H1.Open
|
||||
|
||||
# There is no point of running legs without outerloop tests, when in an outerloop build.
|
||||
- ${{ if and(ne(parameters.testScope, 'outerloop'), ne(parameters.testScope, 'all')) }}:
|
||||
# Packaging all configurations
|
||||
- job: AllConfigurations
|
||||
displayName: Packaging All Configurations
|
||||
strategy:
|
||||
matrix:
|
||||
${{ if eq(parameters.fullMatrix, 'false') }}:
|
||||
x64_Debug:
|
||||
_BuildConfig: Debug
|
||||
_architecture: x64
|
||||
_framework: allConfigurations
|
||||
_helixQueues: $(allConfigurationsQueues)
|
||||
|
||||
${{ if eq(parameters.fullMatrix, 'true') }}:
|
||||
x64_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: x64
|
||||
_framework: allConfigurations
|
||||
_helixQueues: $(allConfigurationsQueues)
|
||||
|
||||
pool:
|
||||
name: Hosted VS2017
|
||||
|
||||
submitToHelix: true
|
||||
buildExtraArguments: /p:RuntimeOS=win10
|
||||
|
||||
variables:
|
||||
- allConfigurationsQueues: Windows.10.Amd64.Server19H1.Open
|
||||
|
||||
frameworkArg: -allConfigurations
|
||||
customBuildSteps:
|
||||
- script: $(buildScriptFileName).cmd
|
||||
-build
|
||||
-configuration $(_BuildConfig)
|
||||
-ci
|
||||
-buildtests
|
||||
-allconfigurations
|
||||
-arch $(_architecture)
|
||||
/p:RuntimeOS=win10
|
||||
/p:ArchiveTests=true
|
||||
$(_msbuildCommonParameters)
|
||||
displayName: Build Packages and Tests
|
||||
|
||||
# Legs without HELIX testing
|
||||
- ${{ if eq(parameters.fullMatrix, 'true') }}:
|
||||
- job: WindowsNoTest
|
||||
displayName: Build
|
||||
strategy:
|
||||
matrix:
|
||||
arm_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: arm
|
||||
_framework: netcoreapp
|
||||
|
||||
arm64_Release:
|
||||
_BuildConfig: Release
|
||||
_architecture: arm64
|
||||
_framework: netcoreapp
|
||||
_publishTests: true
|
||||
|
||||
pool:
|
||||
name: Hosted VS2017
|
||||
|
||||
submitToHelix: false
|
||||
buildExtraArguments: /p:RuntimeOS=win10
|
|
@ -3,13 +3,13 @@
|
|||
<IsReferenceAssembly Condition="'$(IsReferenceAssembly)' == '' and ($(MSBuildProjectFullPath.Contains('\ref\')) or $(MSBuildProjectFullPath.Contains('/ref/')))">true</IsReferenceAssembly>
|
||||
|
||||
<!-- Create a common root output directory for all reference assemblies -->
|
||||
<ReferenceAssemblyOutputPath Condition="'$(ReferenceAssemblyOutputPath)' == ''">$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'ref'))</ReferenceAssemblyOutputPath>
|
||||
<ReferenceAssemblyOutputPath Condition="'$(ReferenceAssemblyOutputPath)' == ''">$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', '$(MSBuildProjectName)'))</ReferenceAssemblyOutputPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(IsReferenceAssembly)' == 'true'">
|
||||
<BaseOutputPath>$([MSBuild]::NormalizeDirectory('$(ReferenceAssemblyOutputPath)', '$(MSBuildProjectName)'))</BaseOutputPath>
|
||||
<BaseOutputPath>$([MSBuild]::NormalizeDirectory('$(ReferenceAssemblyOutputPath)', 'ref'))</BaseOutputPath>
|
||||
<OutputPath>$(BaseOutputPath)$(Configuration)</OutputPath>
|
||||
<BaseIntermediateOutputPath>$([MSBuild]::NormalizeDirectory('$(ArtifactsObjDir)', 'ref', '$(MSBuildProjectName)'))</BaseIntermediateOutputPath>
|
||||
<BaseIntermediateOutputPath>$([MSBuild]::NormalizeDirectory('$(ArtifactsObjDir)', '$(MSBuildProjectName)', 'ref'))</BaseIntermediateOutputPath>
|
||||
<IntermediateOutputPath>$(BaseIntermediateOutputPath)$(Configuration)</IntermediateOutputPath>
|
||||
|
||||
<!-- disable warnings about unused fields -->
|
||||
|
|
|
@ -1,66 +0,0 @@
|
|||
<Project DefaultTargets="PublishTestAssets">
|
||||
<Import Project="$(MSBuildThisFileDirectory)Directory.Build.props" />
|
||||
|
||||
<!-- We need to import Directory.Build.targets at the beginning because there is where we import the restored tools targets, in
|
||||
this case we need Microsoft.DotNet.Build.Tasks.Feed targets to be imported. -->
|
||||
<Import Project="$(MSBuildThisFileDirectory)Directory.Build.targets" />
|
||||
|
||||
<PropertyGroup>
|
||||
<AssetManifestDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'TestAssetsManifests'))</AssetManifestDir>
|
||||
<AssetManifestFilePath>$(AssetManifestDir)$(AssetManifestFileName)</AssetManifestFilePath>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="PublishTestAssets">
|
||||
<Error Text="The ExpectedFeedUrl property wasn't supplied." Condition="'$(ExpectedFeedUrl)' == ''" />
|
||||
<Error Text="The AccountKey property wasn't supplied." Condition="'$(AccountKey)' == ''" />
|
||||
<Error Text="FilesToPublishPattern property wasn't supplied." Condition="'$(FilesToPublishPattern)' == ''" />
|
||||
|
||||
<PropertyGroup>
|
||||
<_TestAssetVersion>$(PackageVersion)-$(VersionSuffix)</_TestAssetVersion>
|
||||
<_FileRelativePathBase>corefx-tests/$(_TestAssetVersion)/$(OSGroup).$(ArchGroup)/$(TargetGroup)/</_FileRelativePathBase>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<_ItemsToPush Remove="@(_ItemsToPush)" />
|
||||
<_ItemsToPush Include="$(FilesToPublishPattern)" />
|
||||
<_ItemsToPush>
|
||||
<RelativeBlobPath>$(_FileRelativePathBase)$([System.String]::Copy('%(RecursiveDir)%(Filename)%(Extension)').Replace('\' ,'/'))</RelativeBlobPath>
|
||||
</_ItemsToPush>
|
||||
</ItemGroup>
|
||||
|
||||
<Error Condition="'@(_ItemsToPush)' == ''" Text="No files to push." />
|
||||
|
||||
<PushToBlobFeed ExpectedFeedUrl="$(ExpectedFeedUrl)"
|
||||
AccountKey="$(AccountKey)"
|
||||
ItemsToPush="@(_ItemsToPush)"
|
||||
PublishFlatContainer="true"
|
||||
ManifestBuildId="$(ManifestBuildId)"
|
||||
ManifestBranch="$(ManifestBranch)"
|
||||
ManifestCommit="$(ManifestCommit)"
|
||||
ManifestBuildData="$(ManifestBuildData)"
|
||||
ManifestRepoUri="$(ManifestRepoUri)"
|
||||
AssetManifestPath="$(AssetManifestFilePath)"
|
||||
Overwrite="true" />
|
||||
|
||||
<ItemGroup>
|
||||
<_ManifestToPush Remove="@(_ManifestToPush)" />
|
||||
<_ManifestToPush Include="$(AssetManifestFilePath)">
|
||||
<RelativeBlobPath>$(_FileRelativePathBase)$(AssetManifestFileName)</RelativeBlobPath>
|
||||
</_ManifestToPush>
|
||||
</ItemGroup>
|
||||
|
||||
<Message Importance="High" Text="PublishTestAssets: $(_FileRelativePathBase)$(AssetManifestFileName)" />
|
||||
|
||||
<PushToBlobFeed ExpectedFeedUrl="$(ExpectedFeedUrl)"
|
||||
AccountKey="$(AccountKey)"
|
||||
ItemsToPush="@(_ManifestToPush)"
|
||||
PublishFlatContainer="true"
|
||||
ManifestBuildId="$(ManifestBuildId)"
|
||||
ManifestBranch="$(ManifestBranch)"
|
||||
ManifestCommit="$(ManifestCommit)"
|
||||
ManifestBuildData="$(ManifestBuildData)"
|
||||
ManifestRepoUri="$(ManifestRepoUri)"
|
||||
AssetManifestPath="$(AssetManifestDir)ManifestUpload.xml"
|
||||
Overwrite="true" />
|
||||
</Target>
|
||||
</Project>
|
|
@ -10,8 +10,9 @@
|
|||
|
||||
<ItemGroup Condition="'$(BuildAllConfigurations)' != 'true'">
|
||||
<!-- We currently only test with C# projects. -->
|
||||
<Project Condition="'$(DirectoryToBuild)' == ''" Include="$(MSBuildThisFileDirectory)*\tests\**\*.Tests.csproj" Exclude="@(ProjectExclusions)" />
|
||||
<Project Condition="'$(DirectoryToBuild)' != ''" Include="$(DirectoryToBuild)\**\*.Tests.csproj" />
|
||||
<Project Condition="'$(SkipTestRestore)' != 'true' and '$(DirectoryToBuild)' == ''" Include="$(MSBuildThisFileDirectory)*\tests\**\*.Tests.csproj" Exclude="@(ProjectExclusions)" />
|
||||
<Project Condition="'$(SkipTestRestore)' == 'true' and '$(DirectoryToBuild)' == ''" Include="$(CommonTestPath)CoreFx.Private.TestUtilities\CoreFx.Private.TestUtilities.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(BuildAllConfigurations)' == 'true'">
|
||||
|
|
Loading…
Reference in New Issue