首页 > 解决方案 > 如何更改管道变量以在 Azure DevOps 的下一个构建中使用

问题描述

我的情况如下:我创建了一个带有管道变量的 Azure DevOps 管道,比如说“变量 A”。“变量 A”的值为 1。在构建过程中,我将“变量 A”的值更改为 2。

当构建第二次运行时,我想要这些“变量 A”的值,但这又回到了 1,但我希望该值为 2,因为在之前的构建中,我将“变量 A”的值设置为 2。

这些是我尝试但没有成功的方法:

方法一:

Write-Host "##vso[task.setvariable variable=A;]2"

方法二:

$env:A = 2

唯一可行但我不认为这是要走的路是通过其余 api 获取整个构建定义,然后将其放回并更改变量的值。

这个问题还有其他解决方案吗?

标签: azurevariablesazure-devopsazure-pipelinesdevops

解决方案


如果您特别关注不断增加的数字,那么您也可以使用计数器。这些仅适用于基于 YAML 的构建定义。

格式如下:

您可以使用任何受支持的表达式来设置变量。这是一个将变量设置为计数器的示例,该计数器从 100 开始,每次运行递增 1,每天重置为 100。

yaml

jobs:
- job:
  variables:
    a: $[counter(format('{0:yyyyMMdd}', pipeline.startTime), 100)]
  steps:
    - bash: echo $(a)

有关计数器和其他表达式的更多信息,请参阅表达式

计数器是为管道存储的,并且基于您在 counterr 表达式中提供的前缀。上面的表达式使用yyyymmdd来生成每天唯一的前缀。


对于 UI 驱动的构建定义,确实使用 REST api 来更新整个定义是可行的,尽管很难解决所有关于并行性的可能性。


推荐阅读