Azure DevOps Pipeline - 更新内部版本号

问题描述 投票:0回答:2

我尝试更新 Azure DevOps Pipelines 中的内部版本号已经有一段时间了,并查看了各种 stackoverflow 问题和文档,但我根本不知道如何解决我的问题。

我想设置的内部版本号是:

$(year:yy)$(DayOfYear)$(rev:.r)

这显然适用于使用图形界面的管道(管道不是我制作的)

到目前为止我尝试过的:

- task: UpdateBuildNumber@0
  inputs:
    buildNumber: '$(year:yy)$(DayOfYear)$(rev:.r)'
Write-Host "##vso[build.updatebuildnumber]$(year:yy)$(DayOfYear)$(rev:.r)"

还有一些这些的变体。每次我都会收到错误:

##[错误]TF209010:内部版本号格式 $(year:yy)$(DayOfYear)$(rev:.r) 包含无效字符,太 长,或以“.”结尾。内部版本号的最大长度为 255 人物。不允许的字符包括 '"'、'/'、':'、 '<', '>'、''、'|'、'?'、'@' 和 '*'。

我尝试为每个日期创建变量,并使用这些变量来代替,但这也不起作用。

任何帮助将不胜感激。

azure-devops azure-pipelines azure-pipelines-yaml
2个回答
2
投票

因为只有在 YAML 中的

name:
中给出所有这些变量才可用,而不是在其他任务中给出。

来自文档

下表显示了如何根据前面的示例解析每个令牌。您只能使用这些标记来定义运行编号;它们在您的管道中的其他任何地方都不起作用。

所以,唯一的选择就是配置

name: $(year:yy)$(DayOfYear)$(rev:.r)


0
投票

我一直在努力寻找原因和解决方案,但现在我找到了!

您最初的想法似乎不错,您可能只需要删除“”

Write-Host ##vso[build.updatebuildnumber]$(year:yy)$(DayOfYear)$(rev:.r)

在调试运行时,其原因就会变得明显。 YAML 被“翻译”为以下代码行。结尾的 " 在命令内部结束,并成为解析到方法的字符串的一部分

调试器的输出:

##[debug]INPUT_SCRIPT: 'echo "##vso[build.updatebuildnumber]1.3.0-beta.15"'

我的情况是 YAML 行最终是这样的。当我重用构建编号(版本)和构建管道中的工件时,触发此部署管道

echo ##vso[build.updatebuildnumber]$(resources.pipeline.FoundationRelease.runName)

我还测试了这些在作业中使用变量集的行

enter code hereecho ##vso[build.updatebuildnumber]${{variables.Version}}
© www.soinside.com 2019 - 2024. All rights reserved.