aspnetcore/.azure/pipelines/ci.yml

815 lines
29 KiB
YAML

#
# See https://docs.microsoft.com/en-us/vsts/pipelines/yaml-schema for details on this file.
#
# Configure which branches trigger builds
trigger:
batch: true
branches:
include:
- blazor-wasm
- master
- release/*
- internal/release/*
# Run PR validation on all branches
pr:
autoCancel: true
branches:
include:
- '*'
variables:
- name: DOTNET_SKIP_FIRST_TIME_EXPERIENCE
value: true
- name: _TeamName
value: AspNetCore
- name: _DotNetPublishToBlobFeed
value: true
- name: _PublishUsingPipelines
value: true
- name: _DotNetArtifactsCategory
value: .NETCORE
- name: _DotNetValidationArtifactsCategory
value: .NETCORE
- name: PostBuildSign
value: false
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- name: _BuildArgs
value: /p:TeamName=$(_TeamName)
/p:OfficialBuildId=$(Build.BuildNumber)
/p:SkipTestBuild=true
# DotNet-Blob-Feed provides: dotnetfeed-storage-access-key-1
# Publish-Build-Assets provides: MaestroAccessToken, BotAccount-dotnet-maestro-bot-PAT
- group: DotNet-Blob-Feed
- group: Publish-Build-Assets
# The following extra properties are not set when testing. Use with final build.[cmd,sh] of asset-producing jobs.
- name: _PublishArgs
value: /p:Publish=true
/p:GenerateChecksums=true
/p:DotNetPublishBlobFeedKey=$(dotnetfeed-storage-access-key-1)
/p:DotNetPublishBlobFeedUrl=https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json
/p:DotNetPublishToBlobFeed=$(_DotNetPublishToBlobFeed)
/p:DotNetPublishUsingPipelines=$(_PublishUsingPipelines)
/p:DotNetArtifactsCategory=$(_DotNetArtifactsCategory)
# Do not log most Windows steps in official builds; this is the slowest job. Site extensions step always logs.
- name: WindowsArm64LogArgs
value: -ExcludeCIBinaryLog
- name: Windows64LogArgs
value: -ExcludeCIBinaryLog
- name: Windows86LogArgs
value: -ExcludeCIBinaryLog
- name: WindowsSignLogArgs
value: -ExcludeCIBinaryLog
- name: WindowsInstallersLogArgs
value: -ExcludeCIBinaryLog
- name: WindowsArm64InstallersLogArgs
value: -ExcludeCIBinaryLog
- ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
- name: _BuildArgs
value: '/p:SkipTestBuild=true'
- name: _PublishArgs
value: ''
# Write binary logs for all main Windows build steps except the x86 one in public and PR builds.
- name: WindowsArm64LogArgs
value: /bl:artifacts/log/Release/Build.arm64.binlog
- name: Windows64LogArgs
value: /bl:artifacts/log/Release/Build.x64.binlog
- name: Windows86LogArgs
value: -ExcludeCIBinaryLog
- name: WindowsSignLogArgs
value: /bl:artifacts/log/Release/Build.CodeSign.binlog
- name: WindowsInstallersLogArgs
value: /bl:artifacts/log/Release/Build.Installers.binlog
- name: WindowsArm64InstallersLogArgs
value: /bl:artifacts/log/Release/Build.Installers.Arm64.binlog
- ${{ if ne(variables['System.TeamProject'], 'internal') }}:
- name: _UseHelixOpenQueues
value: 'true'
- name: _SignType
value: ''
- name: _InternalRuntimeDownloadArgs
value: ''
- name: _InternalRuntimeDownloadCodeSignArgs
value: ''
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- group: DotNet-MSRC-Storage
- name: _InternalRuntimeDownloadArgs
value: -DotNetRuntimeSourceFeed https://dotnetclimsrc.blob.core.windows.net/dotnet -DotNetRuntimeSourceFeedKey
$(dotnetclimsrc-read-sas-token-base64) /p:DotNetAssetRootAccessTokenSuffix='$(dotnetclimsrc-read-sas-token-base64)'
# The code signing doesn't use the aspnet build scripts, so the msbuild parameters have
# to be passed directly. This is awkward, since we pass the same info above, but we have
# to have it in two different forms
- name: _InternalRuntimeDownloadCodeSignArgs
value: /p:DotNetRuntimeSourceFeed=https://dotnetclimsrc.blob.core.windows.net/dotnet /p:DotNetRuntimeSourceFeedKey=$(dotnetclimsrc-read-sas-token-base64)
- group: DotNet-HelixApi-Access
- name: _UseHelixOpenQueues
value: 'false'
- ${{ if notin(variables['Build.Reason'], 'PullRequest') }}:
- name: _SignType
value: real
- ${{ if in(variables['Build.Reason'], 'PullRequest') }}:
- name: _SignType
value: test
stages:
- stage: build
displayName: Build
jobs:
# Code check
- ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
- template: jobs/default-build.yml
parameters:
jobName: Code_check
jobDisplayName: Code check
agentOs: Windows
steps:
- powershell: ./eng/scripts/CodeCheck.ps1 -ci $(_InternalRuntimeDownloadArgs)
displayName: Run eng/scripts/CodeCheck.ps1
artifacts:
- name: Code_Check_Logs
path: artifacts/log/
publishOnError: true
includeForks: true
# Build Windows (x64/x86)
- template: jobs/default-build.yml
parameters:
codeSign: true
jobName: Windows_build
jobDisplayName: "Build: Windows x64/x86"
agentOs: Windows
steps:
- script: "echo ##vso[build.addbuildtag]daily-build"
condition: and(notin(variables['Build.Reason'], 'PullRequest'), notin(variables['DotNetFinalVersionKind'], 'release', 'prerelease'))
displayName: 'Set CI tags'
- script: "echo ##vso[build.addbuildtag]release-candidate"
condition: and(notin(variables['Build.Reason'], 'PullRequest'), in(variables['DotNetFinalVersionKind'], 'release', 'prerelease'))
displayName: 'Set CI tags'
# !!! NOTE !!! Some of these steps have disabled code signing.
# This is intentional to workaround https://github.com/dotnet/arcade/issues/1957 which always re-submits for code-signing, even
# if they have already been signed. This results in slower builds due to re-submitting the same .nupkg many times for signing.
# The sign settings have been configured to
- script: ./build.cmd
-ci
-arch x64
-pack
-all
$(_BuildArgs)
$(_InternalRuntimeDownloadArgs)
$(Windows64LogArgs)
displayName: Build x64
# Build the x86 shared framework
# This is going to actually build x86 native assets.
- script: ./build.cmd
-ci
-noBuildRepoTasks
-arch x86
-pack
-all
-noBuildJava
-noBuildNative
/p:OnlyPackPlatformSpecificPackages=true
$(_BuildArgs)
$(_InternalRuntimeDownloadArgs)
$(Windows86LogArgs)
displayName: Build x86
- script: .\src\SiteExtensions\build.cmd
-ci
-noBuildRepoTasks
-pack
-noBuildDeps
-noBuildNative
$(_BuildArgs)
$(_InternalRuntimeDownloadArgs)
condition: ne(variables['Build.Reason'], 'PullRequest')
displayName: Build SiteExtension
# This runs code-signing on all packages, zips, and jar files as defined in build/CodeSign.targets. If
# https://github.com/dotnet/arcade/issues/1957 is resolved, consider running code-signing inline with the other
# previous steps. Sign check is disabled because it is run in a separate step below, after installers are built.
- script: ./build.cmd
-ci
-noBuildRepoTasks
-noBuildNative
-noBuild
-noRestore
-sign
/p:DotNetSignType=$(_SignType)
$(_BuildArgs)
$(WindowsSignLogArgs)
displayName: Code sign packages
# Windows installers bundle both x86 and x64 assets
- script: ./build.cmd
-ci
-noBuildRepoTasks
-sign
-buildInstallers
-noBuildNative
/p:DotNetSignType=$(_SignType)
/p:AssetManifestFileName=aspnetcore-win-x64-x86.xml
$(_BuildArgs)
$(_PublishArgs)
$(_InternalRuntimeDownloadArgs)
/p:PublishInstallerBaseVersion=true
$(WindowsInstallersLogArgs)
displayName: Build Installers
# A few files must also go to the VS package feed.
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), ne(variables['PostBuildSign'], 'true')) }}:
- task: NuGetCommand@2
displayName: Push Visual Studio packages
inputs:
command: push
packagesToPush: 'artifacts/packages/**/VS.Redist.Common.AspNetCore.*.nupkg'
nuGetFeedType: external
publishFeedCredentials: 'DevDiv - VS package feed'
artifacts:
- name: Windows_Logs
path: artifacts/log/
publishOnError: true
includeForks: true
- name: Windows_Packages
path: artifacts/packages/
# Build Windows ARM
- template: jobs/default-build.yml
parameters:
codeSign: true
jobName: Windows_arm_build
jobDisplayName: "Build: Windows ARM"
agentOs: Windows
buildArgs:
-arch arm
-sign
-pack
-noBuildNodeJS
-noBuildJava
/p:DotNetSignType=$(_SignType)
/p:OnlyPackPlatformSpecificPackages=true
/p:AssetManifestFileName=aspnetcore-win-arm.xml
$(_BuildArgs)
$(_PublishArgs)
$(_InternalRuntimeDownloadArgs)
installNodeJs: false
installJdk: false
artifacts:
- name: Windows_arm_Logs
path: artifacts/log/
publishOnError: true
includeForks: true
- name: Windows_arm_Packages
path: artifacts/packages/
# Build Windows ARM64
- template: jobs/default-build.yml
parameters:
codeSign: true
jobName: Windows_arm64_build
jobDisplayName: "Build: Windows ARM64"
agentOs: Windows
installNodeJs: false
installJdk: false
artifacts:
- name: Windows_arm64_Logs
path: artifacts/log/
publishOnError: true
includeForks: true
- name: Windows_arm64_Packages
path: artifacts/packages/
- name: Windows_arm64_Installers
path: artifacts/installers/
steps:
- script: ./build.cmd
-ci
-arch arm64
-sign
-pack
-noBuildJava
-noBuildNative
/p:DotNetSignType=$(_SignType)
/p:OnlyPackPlatformSpecificPackages=true
$(_BuildArgs)
$(_InternalRuntimeDownloadArgs)
$(WindowsArm64LogArgs)
displayName: Build ARM64
# Windows installers bundle for arm64
- script: ./build.cmd
-ci
-noBuildRepoTasks
-arch arm64
-sign
-buildInstallers
-noBuildNative
/p:DotNetSignType=$(_SignType)
/p:AssetManifestFileName=aspnetcore-win-arm64.xml
$(_BuildArgs)
$(_PublishArgs)
$(_InternalRuntimeDownloadArgs)
$(WindowsArm64InstallersLogArgs)
displayName: Build Arm64 Installers
# A few files must also go to the VS package feed.
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), ne(variables['PostBuildSign'], 'true')) }}:
- task: NuGetCommand@2
displayName: Push Visual Studio packages
inputs:
command: push
packagesToPush: 'artifacts/packages/**/VS.Redist.Common.AspNetCore.*.nupkg'
nuGetFeedType: external
publishFeedCredentials: 'DevDiv - VS package feed'
# Build MacOS
- template: jobs/default-build.yml
parameters:
jobName: MacOs_x64_build
jobDisplayName: "Build: macOS"
agentOs: macOs
buildArgs:
--pack
--all
--no-build-nodejs
--no-build-java
-p:OnlyPackPlatformSpecificPackages=true
-p:AssetManifestFileName=aspnetcore-MacOS_x64.xml
$(_BuildArgs)
$(_PublishArgs)
$(_InternalRuntimeDownloadArgs)
installNodeJs: false
installJdk: false
artifacts:
- name: MacOS_x64_Logs
path: artifacts/log/
publishOnError: true
includeForks: true
- name: MacOS_x64_Packages
path: artifacts/packages/
- ${{ if ne(variables['PostBuildSign'], 'true') }}:
- template: jobs/codesign-xplat.yml
parameters:
inputName: MacOS_x64
# Build Linux x64
- template: jobs/default-build.yml
parameters:
jobName: Linux_x64_build
jobDisplayName: "Build: Linux x64"
agentOs: Linux
useHostedUbuntu: false
steps:
- script: ./build.sh
--ci
--arch x64
--pack
--all
--no-build-nodejs
--no-build-java
-p:OnlyPackPlatformSpecificPackages=true
-p:AssetManifestFileName=aspnetcore-Linux_x64.xml
$(_BuildArgs)
$(_PublishArgs)
$(_InternalRuntimeDownloadArgs)
displayName: Run build.sh
- script: |
git clean -xfd src/**/obj/
./dockerbuild.sh bionic \
--ci \
--nobl \
--arch x64 \
--build-installers \
--no-build-deps \
--no-build-nodejs \
-p:OnlyPackPlatformSpecificPackages=true \
-p:BuildRuntimeArchive=false \
-p:LinuxInstallerType=deb \
$(_BuildArgs) \
$(_InternalRuntimeDownloadArgs)
displayName: Build Debian installers
- script: |
git clean -xfd src/**/obj/
./dockerbuild.sh rhel \
--ci \
--nobl \
--arch x64 \
--build-installers \
--no-build-deps \
--no-build-nodejs \
-p:OnlyPackPlatformSpecificPackages=true \
-p:BuildRuntimeArchive=false \
-p:LinuxInstallerType=rpm \
-p:AssetManifestFileName=aspnetcore-Linux_x64-installers.xml \
$(_BuildArgs) \
$(_PublishArgs) \
$(_InternalRuntimeDownloadArgs)
displayName: Build RPM installers
installNodeJs: false
installJdk: false
artifacts:
- name: Linux_x64_Logs
path: artifacts/log/
publishOnError: true
includeForks: true
- name: Linux_x64_Packages
path: artifacts/packages/
- ${{ if ne(variables['PostBuildSign'], 'true') }}:
- template: jobs/codesign-xplat.yml
parameters:
inputName: Linux_x64
# Build Linux ARM
- template: jobs/default-build.yml
parameters:
jobName: Linux_arm_build
jobDisplayName: "Build: Linux ARM"
agentOs: Linux
buildArgs:
--arch arm
--pack
--all
--no-build-nodejs
--no-build-java
-p:OnlyPackPlatformSpecificPackages=true
-p:AssetManifestFileName=aspnetcore-Linux_arm.xml
$(_BuildArgs)
$(_PublishArgs)
$(_InternalRuntimeDownloadArgs)
installNodeJs: false
installJdk: false
artifacts:
- name: Linux_arm_Logs
path: artifacts/log/
publishOnError: true
includeForks: true
- name: Linux_arm_Packages
path: artifacts/packages/
- ${{ if ne(variables['PostBuildSign'], 'true') }}:
- template: jobs/codesign-xplat.yml
parameters:
inputName: Linux_arm
# Build Linux ARM64
- template: jobs/default-build.yml
parameters:
jobName: Linux_arm64_build
jobDisplayName: "Build: Linux ARM64"
agentOs: Linux
buildArgs:
--arch arm64
--all
--pack
--no-build-nodejs
--no-build-java
-p:OnlyPackPlatformSpecificPackages=true
-p:AssetManifestFileName=aspnetcore-Linux_arm64.xml
$(_BuildArgs)
$(_PublishArgs)
$(_InternalRuntimeDownloadArgs)
installNodeJs: false
installJdk: false
artifacts:
- name: Linux_arm64_Logs
path: artifacts/log/
publishOnError: true
includeForks: true
- name: Linux_arm64_Packages
path: artifacts/packages/
- ${{ if ne(variables['PostBuildSign'], 'true') }}:
- template: jobs/codesign-xplat.yml
parameters:
inputName: Linux_arm64
# Build Linux Musl x64
- template: jobs/default-build.yml
parameters:
jobName: Linux_musl_x64_build
jobDisplayName: "Build: Linux Musl x64"
agentOs: Linux
container: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.9-WithNode-0fc54a3-20190918214015
buildScript: ./build.sh
buildArgs:
--arch x64
--os-name linux-musl
--pack
--all
--no-build-nodejs
--no-build-java
-p:OnlyPackPlatformSpecificPackages=true
-p:AssetManifestFileName=aspnetcore-Linux_musl_x64.xml
$(_BuildArgs)
$(_PublishArgs)
$(_InternalRuntimeDownloadArgs)
installNodeJs: false
installJdk: false
skipComponentGovernanceDetection: true
artifacts:
- name: Linux_musl_x64_Logs
path: artifacts/log/
publishOnError: true
includeForks: true
- name: Linux_musl_x64_Packages
path: artifacts/packages/
- ${{ if ne(variables['PostBuildSign'], 'true') }}:
- template: jobs/codesign-xplat.yml
parameters:
inputName: Linux_musl_x64
# Build Linux Musl ARM
- template: jobs/default-build.yml
parameters:
jobName: Linux_musl_arm_build
jobDisplayName: "Build: Linux Musl ARM"
agentOs: Linux
useHostedUbuntu: false
container: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-cross-arm-alpine-20200827125937-14441ae
buildScript: ./build.sh
buildArgs:
--arch arm
--os-name linux-musl
--pack
--all
--no-build-nodejs
--no-build-java
-p:OnlyPackPlatformSpecificPackages=true
-p:AssetManifestFileName=aspnetcore-Linux_musl_arm.xml
$(_BuildArgs)
$(_PublishArgs)
$(_InternalRuntimeDownloadArgs)
installNodeJs: false
installJdk: false
artifacts:
- name: Linux_musl_arm_Logs
path: artifacts/log/
publishOnError: true
includeForks: true
- name: Linux_musl_arm_Packages
path: artifacts/packages/
- template: jobs/codesign-xplat.yml
parameters:
inputName: Linux_musl_arm
# Build Linux Musl ARM64
- template: jobs/default-build.yml
parameters:
jobName: Linux_musl_arm64_build
jobDisplayName: "Build: Linux Musl ARM64"
agentOs: Linux
useHostedUbuntu: false
container: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-cross-arm64-alpine-20210311173921-b2c2436
buildScript: ./build.sh
buildArgs:
--arch arm64
--os-name linux-musl
--pack
--all
--no-build-nodejs
--no-build-java
-p:OnlyPackPlatformSpecificPackages=true
-p:AssetManifestFileName=aspnetcore-Linux_musl_arm64.xml
$(_BuildArgs)
$(_PublishArgs)
$(_InternalRuntimeDownloadArgs)
installNodeJs: false
installJdk: false
artifacts:
- name: Linux_musl_arm64_Logs
path: artifacts/log/
publishOnError: true
includeForks: true
- name: Linux_musl_arm64_Packages
path: artifacts/packages/
- ${{ if ne(variables['PostBuildSign'], 'true') }}:
- template: jobs/codesign-xplat.yml
parameters:
inputName: Linux_musl_arm64
- ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
# Test jobs
- template: jobs/default-build.yml
parameters:
condition: ne(variables['SkipTests'], 'true')
jobName: Windows_Test
jobDisplayName: "Test: Windows Server 2016 x64"
agentOs: Windows
isTestingJob: true
# Just uploading artifacts/logs/ files can take 15 minutes. Doubling the cancel timeout for this job.
cancelTimeoutInMinutes: 30
buildArgs: -all -pack -test /p:SkipHelixReadyTests=true /p:SkipIISNewHandlerTests=true /p:SkipIISTests=true
/p:SkipIISExpressTests=true /p:SkipIISNewShimTests=true /p:RunTemplateTests=false
$(_InternalRuntimeDownloadArgs)
beforeBuild:
- powershell: "& ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1"
displayName: Setup IISExpress test certificates and schema
artifacts:
- name: Windows_Test_Dumps
path: artifacts/dumps/
publishOnError: true
includeForks: true
- name: Windows_Test_Logs
path: artifacts/log/
publishOnError: true
includeForks: true
- name: Windows_Test_Results
path: artifacts/TestResults/
publishOnError: true
includeForks: true
- template: jobs/default-build.yml
parameters:
condition: ne(variables['SkipTests'], 'true')
jobName: Windows_Templates_Test
jobDisplayName: "Test: Templates - Windows Server 2016 x64"
agentOs: Windows
isTestingJob: true
steps:
- script: ./build.cmd -ci -nobl -all -pack $(_InternalRuntimeDownloadArgs)
displayName: Build Repo
- script: ./src/ProjectTemplates/build.cmd -ci -nobl -noBuildRepoTasks -pack -NoRestore -noBuildNative -NoBuilddeps "/p:RunTemplateTests=true"
displayName: Pack Templates
- script: ./src/ProjectTemplates/build.cmd -ci -nobl -noBuildRepoTasks -test -NoRestore -NoBuild -NoBuilddeps "/p:RunTemplateTests=true"
displayName: Test Templates
artifacts:
- name: Windows_Test_Templates_Dumps
path: artifacts/dumps/
publishOnError: true
includeForks: true
- name: Windows_Test_Templates_Logs
path: artifacts/log/
publishOnError: true
includeForks: true
- name: Windows_Test_Templates_Results
path: artifacts/TestResults/
publishOnError: true
includeForks: true
- template: jobs/default-build.yml
parameters:
condition: ne(variables['SkipTests'], 'true')
jobName: MacOS_Test
jobDisplayName: "Test: macOS 10.14"
agentOs: macOS
timeoutInMinutes: 240
isTestingJob: true
buildArgs: --all --test "/p:RunTemplateTests=false /p:SkipHelixReadyTests=true" $(_InternalRuntimeDownloadArgs)
beforeBuild:
- bash: "./eng/scripts/install-nginx-mac.sh"
displayName: Installing Nginx
artifacts:
- name: MacOS_Test_Logs
path: artifacts/log/
publishOnError: true
includeForks: true
- name: MacOS_Test_Results
path: artifacts/TestResults/
publishOnError: true
includeForks: true
- template: jobs/default-build.yml
parameters:
condition: ne(variables['SkipTests'], 'true')
jobName: Linux_Test
jobDisplayName: "Test: Ubuntu 18.04 x64"
agentOs: Linux
isTestingJob: true
useHostedUbuntu: false
buildArgs: --all --test "/p:RunTemplateTests=false /p:SkipHelixReadyTests=true" $(_InternalRuntimeDownloadArgs)
beforeBuild:
- bash: "./eng/scripts/install-nginx-linux.sh"
displayName: Installing Nginx
- bash: "echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p"
displayName: Increase inotify limit
artifacts:
- name: Linux_Test_Logs
path: artifacts/log/
publishOnError: true
includeForks: true
- name: Linux_Test_Results
path: artifacts/TestResults/
publishOnError: true
includeForks: true
# Helix x64
- template: jobs/default-build.yml
parameters:
jobName: Helix_x64
jobDisplayName: 'Tests: Helix x64'
agentOs: Windows
timeoutInMinutes: 240
steps:
# Build the shared framework
- script: ./build.cmd -ci -nobl -all -pack -arch x64
/p:CrossgenOutput=false /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log $(_InternalRuntimeDownloadArgs)
displayName: Build shared fx
- script: ./build.cmd -ci -nobl -noBuildRepoTasks -restore -noBuild -noBuildNative -projects src/Grpc/**/*.csproj
/p:CrossgenOutput=false /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log $(_InternalRuntimeDownloadArgs)
displayName: Restore interop projects
- script: ./build.cmd -ci -nobl -noBuildRepoTasks -noRestore -test -all -noBuildNative -projects eng\helix\helix.proj
/p:IsRequiredCheck=true /p:IsHelixJob=true /p:BuildInteropProjects=true /p:RunTemplateTests=true
/p:CrossgenOutput=false /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log $(_InternalRuntimeDownloadArgs)
displayName: Run build.cmd helix target
env:
HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues
SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops
artifacts:
- name: Helix_logs
path: artifacts/log/
publishOnError: true
includeForks: true
# Source build
- job: Source_Build
displayName: 'Test: Linux Source Build'
container: centos:7
pool:
vmImage: 'ubuntu-18.04'
variables:
DotNetCoreSdkDir: $(Agent.ToolsDirectory)/dotnet
# This isn't needed in the path because build does not need to _use_ global tools.
DOTNET_CLI_HOME: $(System.DefaultWorkingDirectory)
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: true
LC_ALL: 'en_US.UTF-8'
LANG: 'en_US.UTF-8'
LANGUAGE: 'en_US.UTF-8'
steps:
- script: |
source eng/common/native/common-library.sh
mkdir -p $(System.DefaultWorkingDirectory)/.tools
GetFile https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 $(System.DefaultWorkingDirectory)/.tools/jq
chmod +x $(System.DefaultWorkingDirectory)/.tools/jq
echo "##vso[task.prependpath]$(System.DefaultWorkingDirectory)/.tools"
displayName: Install jq
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
- task: Bash@3
displayName: Setup Private Feeds Credentials
inputs:
filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh
arguments: $(Build.SourcesDirectory)/NuGet.config $Token
env:
Token: $(dn-bot-dnceng-artifact-feeds-rw)
- script: ./eng/scripts/ci-source-build.sh --ci --nobl --configuration Release /p:BuildManaged=true /p:BuildNodeJs=false $(_InternalRuntimeDownloadArgs)
displayName: Run ci-source-build.sh
- task: PublishBuildArtifacts@1
displayName: Upload logs
condition: always()
continueOnError: true
inputs:
pathtoPublish: artifacts/log/
artifactName: Source_Build_Logs
artifactType: Container
parallel: true
- task: PublishBuildArtifacts@1
displayName: Upload package artifacts
# Only capture source build artifacts in PRs for the sake of inspecting
# changes that impact source-build. The artifacts from this build pipeline are never actually used.
condition: and(succeeded(), in(variables['Build.Reason'], 'PullRequest'))
inputs:
pathtoPublish: artifacts/packages/
artifactName: Source_Build_Packages
artifactType: Container
parallel: true
# Publish to the BAR
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- template: /eng/common/templates/job/publish-build-assets.yml
parameters:
dependsOn:
- Windows_build
- Windows_arm_build
- Windows_arm64_build
- ${{ if ne(variables['PostBuildSign'], 'true') }}:
- CodeSign_Xplat_MacOS_x64
- CodeSign_Xplat_Linux_x64
- CodeSign_Xplat_Linux_arm
- CodeSign_Xplat_Linux_arm64
- CodeSign_Xplat_Linux_musl_x64
- CodeSign_Xplat_Linux_musl_arm
- CodeSign_Xplat_Linux_musl_arm64
# In addition to the dependencies above, ensure the build was successful overall.
- Source_Build
pool:
vmImage: vs2017-win2016
publishUsingPipelines: ${{ variables._PublishUsingPipelines }}
enablePublishBuildArtifacts: true # publish artifacts/log files
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- template: /eng/common/templates/post-build/post-build.yml
parameters:
publishingInfraVersion: 3
enableSymbolValidation: false
enableSigningValidation: false
enableNugetValidation: false
publishInstallersAndChecksums: true