【发布时间】:2020-01-10 15:06:13
【问题描述】:
我需要创建几个构建定义,它们都将执行完全相同的步骤。基本上,变化只是触发器和一些参数。因此,我将它们全部基于一个完成所有繁重工作的模板。效果很好。
但是,出于几个原因,我需要自定义$(Build.BuildNumber) 的值,一些美观,一些实用。根据Configure run or build numbers,我所要做的就是在 YAML 定义中设置name 属性。
我所有的定义都应该有相同的名称格式,所以我想直接在模板中定义它。但是在模板中设置顶级name 属性会导致错误消息:
/templates/default-build.yml (Line: 5, Col: 1): Unexpected value 'name'
在各个定义中设置属性按预期工作,但不会作为解决方案“扩展”。
各个定义如下所示:
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)'
我错过了什么吗?还是(当前)不支持在模板中设置此特定属性?
【问题讨论】:
-
我现在没有答案,但您能解释一下为什么放置
name:属性不能扩展吗?如果您尝试将name:放入模板中,您是否期望 $(Build.Definition) 值不同?构建定义的名称由管道的名称定义,因此无论如何,如果您在主 yaml 中有它,运行构建的管道将具有相同的名称。 -
@AnthonyKlotz 它不会“缩放”,因为我将有几十个继承模板的定义,而“任何人”都可以创建新定义。我想确保新的将使用相同的
name定义(我为示例进行了简化),并且对格式的任何更改都会自动应用到任何地方。基本上,限制任何人为错误的机会。 -
@madd0 进展如何? 4c74356b41 的回答对您有帮助吗?或者,如果您有任何疑虑,请随时在此处分享。
-
$(Rev:.r)对我来说似乎很奇怪。我建议删除点并写$(Rev:r)。见文章Configure run or build numbers。 -
$(Rev:.r)在该页面上的多个示例中使用@Beauty,我向 ms 询问了clarification
标签: azure-devops azure-pipelines