如何在 Azure Pipelines YAML 构建定义中接收修订

Posted

技术标签:

【中文标题】如何在 Azure Pipelines YAML 构建定义中接收修订【英文标题】:How to receive Revision in Azure Pipelines YAML build definition 【发布时间】:2019-07-11 13:53:59 【问题描述】:

我使用 Azure Pipelines (Azure DevOps) 创建了一个新版本,它运行良好。

通常,您使用$(Rev:.r) 在构建中获取修订。不幸的是,在构建步骤中似乎没有替换/设置变量。唯一可以使用它的地方是 YAML 文档中的 name: 属性。

现在我在名称中设置它并在某些 PowerShell 中提取它,如果您可以通过环境变量获取它,则没有必要。

如何在新版本中(在 YAML 文档中的 name: 属性之外)获取修订版(如 $(Rev))?

(在 Docker 内部运行的构建代理 - 但这不应该影响上述内容)

【问题讨论】:

【参考方案1】:

如果不进行解析,您将无法获得修订号,它不会作为单独的字段存储在某处或环境变量中。

$(Rev:.r) 部分指示 Azure DevOps 提供使内部版本号唯一的第一个数字(并且在该特定示例中,在其前面放置一个点)。

正如你所说,唯一的方法是使用 PowerShell 脚本来获取值:

$buildNumber = $Env:BUILD_BUILDNUMBER
$revision= $buildNumber.Substring($buildNumber.LastIndexOf('.') + 1)

编辑:

您可以安装执行此操作的 Get Revision Number 扩展程序。

【讨论】:

好的,我就是这么做的。也许它会在功能中成为可能。 你可以在这里向 MS 推荐一个功能developercommunity.visualstudio.com/content/idea/…

以上是关于如何在 Azure Pipelines YAML 构建定义中接收修订的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps Pipelines - 仅在上一次运行成功时运行 YAML 管道

Azure Pipelines Stages (YAML) 上的手动触发器

Azure Pipelines 将 YAML 用于具有不同变量值但没有 YAML 重复的多个环境(阶段)

如何:在 Azure DevOps YAML 中有条件地插入模板?

如何为 Azure Pipelines 中的每个阶段使用不同的服务连接?

Azure DevOps、YAML 发布管道? [关闭]