如何在Azure DevOps生成管道模板中设置生成名称(Build.BuildNumber)?

时间:2020-01-10 15:06:13

标签: azure-devops azure-pipelines

我需要创建几个构建定义,它们将执行完全相同的步骤。基本上,什么变化只是触发器和一些参数。因此,我将它们全部基于一个模板来完成所有繁重的工作。很好。

但是,由于一些原因(出于美观和实践),我需要自定义$(Build.BuildNumber)的值。根据{{​​3}},我要做的就是在YAML定义中设置name属性。

我所有的定义都应使用相同的名称格式,因此我想直接在模板中进行定义。但是在模板中设置顶级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)'

我错过了什么吗?还是只是(当前)不支持在模板中设置此特定属性?

1 个答案:

答案 0 :(得分:2)

我认为不支持为此使用模板,因为name是顶级参数,模板中的所有内容都不是顶级东西。

https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema#pipeline