2024-04-02 22:07:15 +00:00
# Pipeline: https://dnceng.visualstudio.com/internal/_build?definitionId=286
2018-10-17 22:17:40 +00:00
trigger :
2019-04-10 23:17:11 +00:00
batch : true
branches :
include :
2021-03-18 22:21:24 +00:00
- main
2019-04-10 23:17:11 +00:00
- master
- release/*
2023-08-15 17:40:10 +00:00
- internal/release/*
2018-10-17 22:17:40 +00:00
variables :
2019-09-10 19:33:20 +00:00
- name : _PublishUsingPipelines
value : false
2022-09-13 19:26:52 +00:00
- ${{ if or(startswith(variables['Build.SourceBranch'], 'refs/heads/release/'), startswith(variables['Build.SourceBranch'], 'refs/heads/internal/release/'), eq(variables['Build.Reason'], 'Manual')) }}:
- name : PostBuildSign
value : false
- ${{ else }}:
- name : PostBuildSign
value : true
2019-01-24 19:21:51 +00:00
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
2022-10-25 21:32:46 +00:00
- name : Codeql.Enabled
value : true
2020-04-02 13:24:09 +00:00
- group : DotNet-Installer-SDLValidation-Params
2019-09-10 19:33:20 +00:00
- name : _PublishUsingPipelines
value : true
2021-08-06 20:54:33 +00:00
- name : _InternalRuntimeDownloadArgs
value : ''
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- name : _InternalRuntimeDownloadArgs
2022-02-04 23:32:31 +00:00
value : /p:DotNetRuntimeSourceFeed=https://dotnetbuilds.blob.core.windows.net/internal
2022-01-19 18:34:20 +00:00
/p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64)
2021-11-15 16:37:04 +00:00
/p:dotnetbuilds-internal-container-read-token-base64=$(dotnetbuilds-internal-container-read-token-base64)
2023-02-08 19:47:59 +00:00
- template : /eng/common/templates/variables/pool-providers.yml
2024-04-02 22:07:15 +00:00
# Set the MicroBuild plugin installation directory to the agent temp directory to avoid SDL tool scanning.
- name : MicroBuildOutputFolderOverride
value : $(Agent.TempDirectory)
2021-08-06 20:54:33 +00:00
2024-04-02 22:07:15 +00:00
resources :
repositories :
- repository : 1esPipelines
type : git
name : 1ESPipelineTemplates/1ESPipelineTemplates
ref : refs/tags/release
2021-03-24 08:02:14 +00:00
2024-04-02 22:07:15 +00:00
extends :
${{ if notin(variables['Build.Reason'], 'PullRequest') }}:
template : v1/1ES.Official.PipelineTemplate.yml@1esPipelines
${{ else }}:
template : v1/1ES.Unofficial.PipelineTemplate.yml@1esPipelines
parameters :
containers :
2024-04-17 20:54:08 +00:00
alpine319WithNode :
image : mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-WithNode
2024-04-02 22:07:59 +00:00
cblMariner20Fpm :
image : mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-fpm
centosStream8 :
image : mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8
2024-04-17 20:54:08 +00:00
debian11 :
image : mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-amd64
2024-07-11 13:25:55 +00:00
fedora40 :
image : mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-40
2024-04-02 22:07:59 +00:00
ubuntu2204 :
image : mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04
2024-04-17 20:54:08 +00:00
mariner20CrossArm :
2024-04-19 21:41:49 +00:00
image : mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-cross-arm-alpine
2024-04-02 22:07:59 +00:00
ubuntu2204DebPkg :
image : mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04-debpkg
2024-04-02 22:07:15 +00:00
sdl :
sourceAnalysisPool :
name : $(DncEngInternalBuildPool)
2024-04-02 22:07:59 +00:00
image : 1es-windows-2022
2024-04-02 22:07:15 +00:00
os : windows
2024-05-17 20:51:35 +00:00
${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
componentgovernance :
ignoreDirectories : artifacts, .packages
2024-04-02 22:07:59 +00:00
# Temporary to workaround MicroBuild issues.
credscan :
enabled : false
justificationForDisabling : 'CredScan is failing on the MicroBuild signing plugin. "MicroBuild/Plugins/nuget.config" has changing content and thus cannot be baselined.'
2024-04-02 22:07:15 +00:00
stages :
2024-04-02 22:07:59 +00:00
- stage : Build
2024-04-02 22:07:15 +00:00
jobs :
# Build Retry Configuration
- job : Publish_Build_Configuration
pool :
${{ if eq(variables['System.TeamProject'], 'public') }}:
name : $(DncEngPublicBuildPool)
2024-04-02 22:07:59 +00:00
image : 1es-windows-2022-open
2024-04-02 22:07:15 +00:00
os : windows
${{ if eq(variables['System.TeamProject'], 'internal') }}:
name : $(DncEngInternalBuildPool)
2024-04-02 22:07:59 +00:00
image : 1es-windows-2022
2024-04-02 22:07:15 +00:00
os : windows
steps :
- task : 1ES.PublishPipelineArtifact@1
displayName : Publish Build Config
inputs :
2024-04-02 22:07:59 +00:00
targetPath : $(Build.SourcesDirectory)\eng\buildConfiguration
artifactName : buildConfiguration
2019-09-10 19:33:20 +00:00
2024-04-02 22:07:59 +00:00
# PR-only jobs
- ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
# Windows
- template : eng/build.yml@self
parameters :
agentOs : Windows_NT
jobName : Build_Debug_x64
buildConfiguration : Debug
buildArchitecture : x64
additionalBuildParameters : '/p:PublishInternalAsset=true'
runTests : true
# Linux
- template : eng/build.yml@self
parameters :
agentOs : Linux
jobName : Build_Ubuntu_22_04_Debug_x64
container : ubuntu2204
buildConfiguration : Debug
buildArchitecture : x64
linuxPortable : true
runTests : true
- template : eng/build.yml@self
parameters :
agentOs : Linux
2024-07-15 06:21:07 +00:00
jobName : Build_Fedora_40_Debug_x64
container : fedora40
2024-04-02 22:07:59 +00:00
buildConfiguration : Debug
buildArchitecture : x64
linuxPortable : true
runTests : true
- template : eng/build.yml@self
parameters :
agentOs : Linux
jobName : Build_CentOS_8_Stream_Debug_x64
container : centosStream8
buildConfiguration : Debug
buildArchitecture : x64
linuxPortable : false
runTests : true
- template : eng/build.yml@self
parameters :
agentOs : Linux
2024-04-17 20:54:08 +00:00
jobName : Build_Debian_11_Debug_x64
container : debian11
2024-04-02 22:07:59 +00:00
buildConfiguration : Debug
buildArchitecture : x64
additionalBuildParameters : '/p:BuildSdkDeb=true'
linuxPortable : false
runTests : true
- template : eng/build.yml@self
parameters :
agentOs : Linux
jobName : Build_Arm64_Debug
buildConfiguration : Debug
buildArchitecture : arm64
runtimeIdentifier : 'linux-arm64'
linuxPortable : true
# Never run tests on arm64
runTests : false
- template : eng/build.yml@self
parameters :
agentOs : Linux
jobName : Build_Linux_musl_Debug_x64
2024-04-17 20:54:08 +00:00
container : alpine319WithNode
2024-04-02 22:07:59 +00:00
buildConfiguration : Debug
buildArchitecture : x64
runtimeIdentifier : 'linux-musl-x64'
# Pass in HostOSName when running on alpine
additionalBuildParameters : '/p:HostOSName="linux-musl"'
linuxPortable : false
runTests : true
- template : eng/build.yml@self
parameters :
agentOs : Linux
jobName : Build_LinuxPortable_Release_x64
buildConfiguration : Release
buildArchitecture : x64
linuxPortable : true
runTests : true
2021-04-16 22:42:45 +00:00
2024-04-02 22:07:59 +00:00
# MacOS
- template : eng/build.yml@self
parameters :
agentOs : Darwin
jobName : Build_Release_x64
buildConfiguration : Release
buildArchitecture : x64
runTests : true
2018-10-17 22:17:40 +00:00
2024-04-02 22:07:59 +00:00
# Official/PGO instrumentation Builds
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
# Windows
- template : eng/build.yml@self
parameters :
agentOs : Windows_NT
jobName : Build_Release_x64
buildConfiguration : Release
buildArchitecture : x64
additionalBuildParameters : '/p:PublishInternalAsset=true'
runTests : false
- template : eng/build.yml@self
parameters :
agentOs : Windows_NT
jobName : Build_Release_x86
buildConfiguration : Release
buildArchitecture : x86
runTests : false
- template : eng/build.yml@self
parameters :
agentOs : Windows_NT
jobName : Build_Release_arm64
buildConfiguration : Release
buildArchitecture : arm64
runTests : false
# Linux
- template : eng/build.yml@self
parameters :
agentOs : Linux
jobName : Build_Arm_Release
buildConfiguration : Release
buildArchitecture : arm
runtimeIdentifier : 'linux-arm'
linuxPortable : true
runTests : false
- template : eng/build.yml@self
parameters :
agentOs : Linux
jobName : Build_Arm64_Release
buildConfiguration : Release
buildArchitecture : arm64
runtimeIdentifier : 'linux-arm64'
linuxPortable : true
runTests : false
- template : eng/build.yml@self
parameters :
agentOs : Linux
jobName : Build_Linux_musl_Release_arm
2024-04-17 20:54:08 +00:00
container : mariner20CrossArm
2024-04-02 22:07:59 +00:00
buildConfiguration : Release
buildArchitecture : arm
runtimeIdentifier : 'linux-musl-arm'
additionalBuildParameters : '/p:OSName="linux-musl"'
linuxPortable : false
runTests : false
- template : eng/build.yml@self
parameters :
agentOs : Linux
jobName : Build_Linux_musl_Release_arm64
buildConfiguration : Release
buildArchitecture : arm64
runtimeIdentifier : 'linux-musl-arm64'
additionalBuildParameters : '/p:OSName="linux-musl"'
linuxPortable : false
runTests : false
- template : eng/build.yml@self
parameters :
agentOs : Linux
jobName : Build_Linux_musl_Release_x64
2024-04-17 20:54:08 +00:00
container : alpine319WithNode
2024-04-02 22:07:59 +00:00
buildConfiguration : Release
buildArchitecture : x64
runtimeIdentifier : 'linux-musl-x64'
# Pass in HostOSName when running on alpine
additionalBuildParameters : '/p:HostOSName="linux-musl"'
linuxPortable : false
runTests : false
- template : eng/build.yml@self
parameters :
agentOs : Linux
jobName : Build_Linux_Portable_Deb_Release_x64
container : ubuntu2204DebPkg
buildConfiguration : Release
buildArchitecture : x64
# Do not publish zips and tarballs. The linux-x64 binaries are
# already published by Build_LinuxPortable_Release_x64
additionalBuildParameters : '/p:PublishBinariesAndBadge=false /p:BuildSdkDeb=true'
linuxPortable : true
runTests : false
- template : eng/build.yml@self
parameters :
agentOs : Linux
jobName : Build_Linux_Portable_Rpm_Release_x64
container : cblMariner20Fpm
buildConfiguration : Release
buildArchitecture : x64
# Do not publish zips and tarballs. The linux-x64 binaries are
# already published by Build_LinuxPortable_Release_x64
additionalBuildParameters : '/p:PublishBinariesAndBadge=false /p:IsRPMBasedDistro=true'
linuxPortable : true
runTests : false
- template : eng/build.yml@self
parameters :
agentOs : Linux
jobName : Build_Linux_Portable_Rpm_Release_Arm64
container : cblMariner20Fpm
buildConfiguration : Release
buildArchitecture : arm64
runtimeIdentifier : 'linux-arm64'
# Do not publish zips and tarballs. The linux-x64 binaries are
# already published by Build_LinuxPortable_Release_x64
additionalBuildParameters : '/p:PublishBinariesAndBadge=false /p:CLIBUILD_SKIP_TESTS=true /p:IsRPMBasedDistro=true'
linuxPortable : true
runTests : false
- template : eng/build.yml@self
parameters :
agentOs : Linux
jobName : Build_LinuxPortable_Release_x64
buildConfiguration : Release
buildArchitecture : x64
linuxPortable : true
runTests : false
2021-06-28 12:36:57 +00:00
2024-04-02 22:07:59 +00:00
# MacOS
- template : eng/build.yml@self
parameters :
agentOs : Darwin
jobName : Build_Release_x64
buildConfiguration : Release
buildArchitecture : x64
runTests : false
- template : eng/build.yml@self
parameters :
agentOs : Darwin
jobName : Build_Release_arm64
runtimeIdentifier : 'osx-arm64'
buildConfiguration : Release
buildArchitecture : arm64
runTests : false
2021-05-04 21:17:02 +00:00
2024-04-02 22:07:59 +00:00
# Source Build
2024-04-02 22:07:15 +00:00
- template : /eng/common/templates-official/jobs/source-build.yml@self
2024-07-02 16:53:08 +00:00
parameters :
enableInternalSources : true
2021-08-06 17:50:48 +00:00
2024-04-02 22:07:59 +00:00
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- stage : Publish
dependsOn :
- Build
jobs :
2024-04-02 22:07:15 +00:00
- template : /eng/common/templates-official/job/publish-build-assets.yml@self
parameters :
publishUsingPipelines : true
2024-04-02 22:07:59 +00:00
publishAssetsImmediately : true
2024-04-02 22:07:15 +00:00
pool :
name : $(DncEngInternalBuildPool)
2024-04-02 22:07:59 +00:00
image : 1es-windows-2022
2024-04-02 22:07:15 +00:00
os : windows