azure-devops - 有条件地在 Azure DevOps 生成名称中包含分支名称
问题描述
我正在使用 Azure DevOps 构建管道,但我希望更改构建的名称。根据文档,这是完全可能的。
考虑到这一点,我测试了以下内容,它有效。到目前为止,一切都很好...
name: '1.0.$(Rev:r)-$(Build.SourceBranchName)'
1.0.1-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)'
我已经尝试过${{ variables.Build.SourceBranchName }}
,并且$[variables.Build.SourceBranchName]
按照文档中的描述,但正如所写的那样,它们的令牌要么被忽略,要么返回一个空字符串。这三种格式给我留下了以下构建名称。
1.0.1-$(Build.SourceBranchName)
1.0.1-
1.0.1-$[variables.Build.SourceBranchName]
关于自定义命名的文档提到了一个变量$(SourceBranchName)
,但我已经尝试过了,它也失败了。
我感到困惑的是,段中的表达式可以访问此处描述variables:
的变量值,但似乎段本身无法访问。variables:
是否可以有条件地命名构建,以便我可以根据需要包含/排除分支名称?
解决方案
问题是您如何在解析时间表达式中引用 $(Build.SourceBranchName) 。它在上下文中以该格式不可用。附加信息在这里
这对我有用!
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。
推荐阅读
- r - 如何在不丢失原始变量的情况下离散化数值变量?
- makefile - 如何在 Makefile 的变量中运行命令?
- reactjs - 在没有 Javascript 的情况下反应路由
- python - 我有两个本地磁盘,我的 python 外部模块安装在我不使用的磁盘中
- python - 如果未激活原始 conda 环境,则调用 matplotlib.pyplot.subplots 时由 PyInstaller 创建的可执行文件关闭且没有错误
- javascript - Filepond - 如何在激活事件删除时使用 onreorderfiles?
- python - 以编程方式从本地机器向 Wagtail 添加图像
- java - OpenCSV 阅读器去除结束引号而不是忽略它们
- html - CSS“背景位置:中心”不适用于移动设备
- c# - unity VR-到达最后一个航路点后如何阻止玩家移动?