我需要创建多个构建定义,它们都将执行完全相同的步骤。基本上,改变的只是触发器和一些参数。因此,我将它们全部基于一个可以完成所有繁重工作的模板。效果很好。
但是,我需要自定义的值$(Build.BuildNumber)
出于多种原因,有些是美观的,有些是实用的。根据,我所要做的就是设置name
YAML 定义中的属性。
我所有的定义都应该具有相同的名称格式,所以我想直接在模板中定义它。但设置一个顶级name
模板中的属性会导致错误消息:
/templates/default-build.yml(行:5,列:1):意外值“名称”
在各个定义中设置属性可以按预期工作,但不会作为解决方案“扩展”。
各个定义如下所示:
trigger:
- master
extends:
template: ../templates/default-build.yml
parameters:
solution: '**/ASolution.sln'
模板如下所示:
parameters:
- name: solution
type: string
default: ''
name: $(Build.DefinitionName)_$(Date:yyyyMMdd)$(Rev:.r) # Trying to set Build.BuildNumber
variables:
solution: ${{ parameters.solution }}
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
stages:
- stage: build_solution
jobs:
- job:
steps:
- task: VSBuild@1
displayName: 'Build solution $(solution)'
inputs:
solution: $(solution)
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
ArtifactName: '$(Build.BuildNumber)'
我错过了什么吗?或者(当前)不支持在模板中设置此特定属性?
您可以在调用以下命令的 Powershell 任务中执行此操作##vso[build.updatebuildnumber]
'命令'。
该任务也可以定义为模板,如下所示:
steps:
- task: PowerShell@2
displayName: 'Create version number'
name: 'CreateVersionNumber'
inputs:
targetType: 'inline'
script: |
$newVersion = "MyVersion $(Build.BuildId)"
Write-Host "New version is $($newVersion)"
[string] $buildName = "$($newVersion)"
Write-Host "Setting the name of the build to '$buildName'."
Write-Host "##vso[build.updatebuildnumber]$buildName"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)