0

此线程中,讨论了 Azure Devops 构建中变量组变量的设置。我的问题是是否还有一种方法可以通过 TFS Build 设置变量组变量的值。具体来说:我想将$(Rev:r)构建管道的变量的当前值存储在一个变量组中,以便在不同的构建管道中使用它。

4

1 回答 1

1

我的问题是是否还有一种方法可以通过 TFS Build 设置变量组变量的值

我们仍然可以使用Logging 命令通过 TFS 构建设置变量组变量的值:

Write-Host "##vso[task.setvariable variable=testvar;]testvalue"

但是,如果要将构建管道的$(Rev:r)变量的当前值存储在变量组中以在不同的构建管道中使用它,那么这里会有两个问题。

第一个是该变量$(Rev:r)无法在命令行或 powershell 任务中使用,因为:不支持冒号。此变量$(Rev:r)由 Azure devops 专门定义,我们不能在 azure devops 之外调用它。所以,我们不能使用$(Rev:r)里面的任务,比如:

Write-Host "##vso[task.setvariable variable=testvar;]$(Rev:r)"

为了解决这个问题,我们可以在构建管道的选项选项$(Rev:r)卡的构建编号格式中设置这个变量:

在此处输入图像描述

现在,我们可以使用预定义的变量 Build.BuildNumber来获取 的值$(Rev:r)。命令行或powershell任务支持变量Build.BuildNumber,我们可以使用它:

写入主机“##vso[task.setvariable variable=testvar;]$(Build.BuildNumber)”

第二个问题是Logging Command设置的变量只能应用于当前的agent环境,不会保存到task group。所以它不能用于不同的构建管道。它仍然会使用我最初在任务组中设置的值,您可以检查任务组中的值,它没有被我们的 Logging 命令修改。

为了解决这个问题,我们需要使用 REST API 从网页更新任务组中的真实值:

请查看此线程中的 UPDATE3 答案,了解更新任务组中值的详细步骤。

因此,我们需要使用 REST APIBuild.BuildNumber来实现您的请求。

于 2020-07-16T03:02:45.767 回答