aspnetcore/.vsts-pipelines/templates/phases/default-build.yml

119 lines
4.9 KiB
YAML

#
# Obsolete! New projects should use .azure/templates/jobs/default-build.yml instead
#
# TODO: remove this once templated projects have referenced the new location.
#
# default-build.yml
# Description: Defines a build phase for invoking build.sh/cmd
# Parameters:
# phaseName: string
# The name of the phase. Defaults to the name of the OS.
# queueName: string
# The name of the VSTS agent queue to use.
# agentOs: string
# Used in templates to define variables which are OS specific. Typically from the set { Windows, Linux, macOS }
# buildArgs: string
# Additional arguments to pass to the build.sh/cmd script.
# Note: -ci is always passed
# beforeBuild: [steps]
# Additional steps to run before build.sh/cmd
# afterBuild: [steps]
# Additional steps to run after build.sh/cmd
# artifacts:
# publish: boolean
# Should artifacts be published
# path: string
# The file path to artifacts output
# name: string
# The name of the artifact container
# variables: { string: string }
# A map of custom variables
# matrix: { string: { string: string } }
# A map of matrix configurations and variables. https://docs.microsoft.com/en-us/vsts/pipelines/yaml-schema?view=vsts#matrix
# demands: string | [ string ]
# A list of agent demands. https://docs.microsoft.com/en-us/vsts/pipelines/yaml-schema?view=vsts#demands
# dependsOn: string | [ string ]
# For fan-out/fan-in. https://docs.microsoft.com/en-us/vsts/pipelines/yaml-schema?view=vsts#phase
#
# See https://docs.microsoft.com/en-us/vsts/pipelines/yaml-schema for details
#
parameters:
agentOs: 'Windows'
# phaseName: ''
queueName: ''
buildArgs: ''
configuration: 'Release'
demands: []
beforeBuild: []
afterBuild: []
variables: {}
dependsOn: ''
# matrix: {} - don't define an empty object default because there is no way in template expression yet to check "if isEmpty(parameters.matrix)"
artifacts:
publish: true
path: 'artifacts/' # TODO: this is going to change when we converge with dotnet/arcade tooling
phases:
- phase: ${{ coalesce(parameters.phaseName, parameters.agentOs) }}
dependsOn: ${{ parameters.dependsOn }}
queue:
# If a matrix of builds has been configured, run the matrix in parallel
${{ if ne(parameters.matrix, '') }}:
parallel: 4 # Pick 4 as the default because we usually don't have a matrix of more than 4 configs, and there is no way to say parallel: all
matrix: ${{ parameters.matrix }}
# Map friendly OS names to the right queue
${{ if ne(parameters.queueName, '') }}:
name: ${{ parameters.queueName }}
${{ if and(eq(parameters.queueName, ''), eq(parameters.agentOs, 'macOS')) }}:
name: Hosted macOS Preview
${{ if and(eq(parameters.queueName, ''), eq(parameters.agentOs, 'Linux')) }}:
name: Hosted Linux Preview
${{ if and(eq(parameters.queueName, ''), eq(parameters.agentOs, 'Windows')) }}:
name: Hosted VS2017
demands: ${{ parameters.demands }}
variables:
AgentOsName: ${{ parameters.agentOs }}
ASPNETCORE_TEST_LOG_MAXPATH: "200" # Keep test log file name length low enough for artifact zipping
DOTNET_HOME: $(Agent.WorkFolder)/.dotnet
BuildScriptArgs: ${{ parameters.buildArgs }}
BuildConfiguration: ${{ parameters.configuration }}
${{ insert }}: ${{ parameters.variables }}
steps:
- script: echo "This build template is obsolete and will be removed in the future. Please update your schema to use the .azure/templates/jobs/default-build.yml template"
displayName: THIS TEMPLATE IS OBSOLETE
- checkout: self
clean: true
- ${{ parameters.beforeBuild }}
- ${{ if eq(parameters.agentOs, 'Windows') }}:
- script: .\buildWithProcDump.cmd -ci /p:Configuration=$(BuildConfiguration) $(BuildScriptArgs)
displayName: Run build.cmd
- ${{ if ne(parameters.agentOs, 'Windows') }}:
- script: ./build.sh -ci -p:Configuration=$(BuildConfiguration) $(BuildScriptArgs)
displayName: Run build.sh
- task: PublishTestResults@2
displayName: Publish test results
condition: always()
inputs:
testRunner: vstest
testResultsFiles: 'artifacts/logs/**/*.trx'
- task: PublishTestResults@2
displayName: Publish junit test results
condition: always()
inputs:
testRunner: junit
testResultsFiles: 'artifacts/logs/**/*.junit.xml'
- ${{ if eq(parameters.artifacts.publish, 'true') }}:
- task: PublishBuildArtifacts@1
displayName: Upload artifacts
condition: eq(variables['system.pullrequest.isfork'], false)
inputs:
pathtoPublish: ${{ parameters.artifacts.path }}
${{ if eq(parameters.artifacts.name, '') }}:
artifactName: artifacts-$(AgentOsName)-$(BuildConfiguration)
${{ if ne(parameters.artifacts.name, '') }}:
artifactName: ${{ parameters.artifacts.name }}
artifactType: Container
- ${{ parameters.afterBuild }}