有条件地将分支名称包含在Azure DevOps内部版本名称中

时间:2020-02-17 16:37:12

标签: azure-devops expression

我正在使用Azure DevOps构建管道,但我希望更改构建名称。根据{{​​3}},这完全有可能。

考虑到这一点,我测试了以下有效的方法。到目前为止一切顺利...

name: '1.0.$(Rev:r)-$(Build.SourceBranchName)'

1.0.1-master

但是,我的要求之一是排除分支名称(如果它是“ master”),因此我尝试了以下方法。这似乎在最初是可行的,因为'master'没有附加分支名称,但是当我运行一个功能分支时,我发现$(Build.SourceBranchName)没有被扩展。

variables:
  ${{ if eq(variables['Build.SourceBranchName'], 'master') }}:
    branchName: ''
  ${{ if ne(variables['Build.SourceBranchName'], 'master') }}:
    branchName: '-$(Build.SourceBranchName)'

name: '1.0.$(Rev:r)$(branchName)'

此后,我按照documentation中所述尝试了${{ variables.Build.SourceBranchName }}$[variables.Build.SourceBranchName],但是在编写时,它们要么被忽略,要么返回空字符串。这三种格式为我提供了以下构建名称。

1.0.1-$(Build.SourceBranchName)
1.0.1-
1.0.1-$ [variables.Build.SourceBranchName]

围绕自定义命名的documentation提到了变量$(SourceBranchName),但是我已经尝试过了,但是它也失败了。

我感到困惑的是,variables:段中的表达式可以访问变量值documentation,但似乎variables:段本身无法访问。

是否可以有条件地命名构建,以便我可以根据需要包括/排除分支名称?

2 个答案:

答案 0 :(得分:2)

问题是您如何在解析时间表达式中引用$(Build.SourceBranchName)。在上下文中,该格式不可用。其他info here

这对我有用!

variables:
  system.debug: true
  ${{ if eq(variables['Build.SourceBranchName'], 'master') }}:
    branchName: ''
  ${{ if ne( variables['Build.SourceBranchName'], 'master') }}:
    branchName: -${{ variables['Build.SourceBranchName'] }}

name: '1.0.$(Rev:r)$(branchName)'

Lance的答案##vso[build.updatebuildnumber]中一些不错的附加信息可能是一条不错的路径,或者您可以使用GitVersion。

答案 1 :(得分:1)

是否可以有条件地命名构建,以便我可以 是否根据需要包含/排除分支名称?

另一种解决方法是使用PowerShell task更新内部版本号。选中this official document

您可以使用##vso[build.updatebuildnumber]my-new-build-number之类的东西。

示例:

name: 1.0.$(Rev:r)

steps:

- task: PowerShell@2
  condition: and(succeeded(), ne(variables['Build.SourceBranchName'], 'master'))
  inputs:
    targetType: 'inline'
    script: |
      $buildNumber = $Env:BUILD_BUILDNUMBER
      $revision= $buildNumber.Substring($buildNumber.LastIndexOf('.') + 1)
      Write-Host "##vso[build.updatebuildnumber]1.0.$revision-$(Build.SourceBranchName)"

将此复制到您的Yaml中,然后它就可以满足您上面的要求。关于如何在任务中使用$(rev:r),感谢 Shayki Abramczyk

希望以上所有都对您有帮助:)