aspnetcore/.azure/pipelines/ci-official.yml

223 lines
7.5 KiB
YAML

trigger:
branches:
include:
- master
- release/*
exclude:
- release/2.0
name: $(Date:yyMMdd)-$(Rev:rr)
phases:
- phase: Windows
queue:
name: DotNetCore-Windows
timeoutInMinutes: 120
matrix:
Release:
BuildConfiguration: Release
variables:
CI: true
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
# This variable is required by MicroBuildSigningPlugin to determine permissions for codesigning.
TeamName: AspNetCore
# SignType = { test, real }
# This is prefixed underscore because variables automatically become environment variables (and therefore MSBuild properties),
# and this one was causing issues in MSBuild projects which use the $(SignType) MSbuild prop.
_SignType: real
steps:
- task: NodeTool@0
displayName: Install Node 10.x
inputs:
versionSpec: 10.x
- task: MicroBuildSigningPlugin@1
displayName: Install MicroBuild plugin
condition: and(succeeded(), in(variables['_SignType'], 'test', 'real'))
inputs:
signType: $(_SignType)
zipSources: false
# TODO: configure build.cmd to build both x64 and x86 in one invocation
- script: build.cmd -ci /p:SkipTests=true /p:Configuration=$(BuildConfiguration) /p:BuildNumber=$(Build.BuildNumber) /t:Build /t:BuildSharedFx /p:SharedFxRID=win-x64 /t:BuildFallbackArchive
displayName: Build NuGet packages and win-x64 runtime
- script: build.cmd -ci /p:SkipTests=true /p:Configuration=$(BuildConfiguration) /p:BuildNumber=$(Build.BuildNumber) /t:BuildSharedFx /p:SharedFxRID=win-x86
displayName: Build win-x86 runtime
- script: build.cmd -ci /p:SkipTests=true /p:Configuration=$(BuildConfiguration) /p:BuildNumber=$(Build.BuildNumber) /t:BuildSharedFx /p:SharedFxRID=win-arm
displayName: Build win-arm runtime
- powershell: >
src/Installers/Windows/clone_and_build_ancm.ps1
-GitCredential '$(dn-bot-devdiv-build-rw-code-rw)'
-Config $(BuildConfiguration)
-BuildNumber $(Build.BuildNumber)
-SignType $(_SignType)
displayName: Build ANCM installers
# TODO: configure harvesting to run as a part of build.cmd
- powershell: >
src/Installers/Windows/build.ps1
-x64 artifacts/runtime/aspnetcore-runtime-internal-3.0.0-alpha1-$(Build.BuildNumber)-win-x64.zip
-x86 artifacts/runtime/aspnetcore-runtime-internal-3.0.0-alpha1-$(Build.BuildNumber)-win-x86.zip
-Config $(BuildConfiguration)
-BuildNumber $(Build.BuildNumber)
-SignType $(_SignType)
displayName: Build Windows installers
- task: PublishTestResults@2
displayName: Publish test results
condition: always()
inputs:
testRunner: vstest
testResultsFiles: 'artifacts/logs/**/*.trx'
- task: PublishBuildArtifacts@1
displayName: Upload artifacts
condition: eq(variables['system.pullrequest.isfork'], false)
inputs:
pathtoPublish: ./artifacts/
artifactName: artifacts-Windows-Release
artifactType: Container
# Detect OSS Components in use in the product. Only needs to run on one OS in the matrix.
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
displayName: 'Component Detection'
inputs:
# This funky GUID represents the product "ASP.NET and EF Core"
governanceProduct: 'c641993b-8380-e811-80c3-0004ffb4789e'
snapshotForceEnabled: true
- task: MicroBuildCleanup@1
displayName: Cleanup MicroBuild tasks
condition: always()
- phase: macOS
dependsOn: Windows
queue:
name: Hosted macOS Preview
matrix:
Release:
BuildConfiguration: Release
variables:
CI: true
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
steps:
- task: DownloadBuildArtifacts@0
displayName: Download artifacts
inputs:
artifactName: artifacts-Windows-Release
downloadPath: $(Build.SourcesDirectory)/.deps
itemPattern: '**/*.nupkg'
# Workaround https://github.com/Microsoft/vsts-tasks/issues/6739
- task: CopyFiles@2
displayName: Copy package assets to correct folder
inputs:
sourceFolder: $(Build.SourcesDirectory)/.deps/artifacts-Windows-Release
targetFolder: $(Build.SourcesDirectory)/.deps
- script: >
./build.sh
--ci
/t:Prepare
/t:Restore
/t:GeneratePropsFiles
/t:BuildSharedFx
/p:SharedFxRID=osx-x64
/p:BuildNumber=$(Build.BuildNumber)
displayName: Build osx-x64 runtime
- task: PublishTestResults@2
displayName: Publish test results
condition: always()
inputs:
testRunner: vstest
testResultsFiles: 'artifacts/logs/**/*.trx'
- task: PublishBuildArtifacts@1
displayName: Upload artifacts
condition: eq(variables['system.pullrequest.isfork'], false)
inputs:
pathtoPublish: ./artifacts/
artifactName: artifacts-macOS-Release
artifactType: Container
- phase: Linux
dependsOn:
- Windows
- macOS
queue:
name: DotNetCore-Linux
matrix:
Release:
BuildConfiguration: Release
variables:
CI: true
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
steps:
- task: DownloadBuildArtifacts@0
displayName: Download artifacts
inputs:
artifactName: artifacts-Windows-Release
downloadPath: $(Build.SourcesDirectory)/.deps
itemPattern: '**/*.nupkg'
- task: DownloadBuildArtifacts@0
displayName: Download Windows artifacts
inputs:
artifactName: artifacts-Windows-Release
downloadPath: $(Build.SourcesDirectory)/.r
itemPattern: '**/aspnetcore-runtime-*'
- task: DownloadBuildArtifacts@0
displayName: Download macOS artifacts
inputs:
artifactName: artifacts-macOS-Release
downloadPath: $(Build.SourcesDirectory)/.r
itemPattern: '**/aspnetcore-runtime-*'
# Workaround https://github.com/Microsoft/vsts-tasks/issues/6739
- task: CopyFiles@2
displayName: Copy package assets to correct folder
inputs:
sourceFolder: $(Build.SourcesDirectory)/.deps/artifacts-Windows-Release
targetFolder: $(Build.SourcesDirectory)/.deps
# TODO: Make the cumulative zips build in their own step
- task: CopyFiles@2
displayName: Copy package assets to correct folder
inputs:
sourceFolder: $(Build.SourcesDirectory)/.r/artifacts-Windows-Release
targetFolder: $(Build.SourcesDirectory)/artifacts/
- task: CopyFiles@2
displayName: Copy package assets to correct folder
inputs:
sourceFolder: $(Build.SourcesDirectory)/.r/artifacts-macOS-Release
targetFolder: $(Build.SourcesDirectory)/artifacts/
- script: >
./build.sh
--ci
/t:Prepare
/t:Restore
/t:GeneratePropsFiles
/t:BuildSharedFx
/p:SharedFxRID=linux-x64
/p:BuildNumber=$(Build.BuildNumber)
displayName: Build linux-x64 runtime
- script: >
./build.sh
--ci
/t:BuildSharedFx
/p:SharedFxRID=linux-arm
/p:BuildNumber=$(Build.BuildNumber)
displayName: Build linux-arm runtime
- script: >
./dockerbuild.sh
alpine
/t:Prepare
/t:GeneratePropsFiles
/t:BuildSharedFx
/p:SharedFxRID=linux-musl-x64
/p:BuildNumber=$(Build.BuildNumber)
displayName: Build linux-musl-x64 runtime
- task: PublishTestResults@2
displayName: Publish test results
condition: always()
inputs:
testRunner: vstest
testResultsFiles: 'artifacts/logs/**/*.trx'
- task: PublishBuildArtifacts@1
displayName: Upload artifacts
condition: eq(variables['system.pullrequest.isfork'], false)
inputs:
pathtoPublish: ./artifacts/
artifactName: artifacts-Linux-Release
artifactType: Container