如何更改管道变量以供在 Azure DevOps 的下一个构建中使用

Mic*_*iel 8 variables azure devops azure-devops azure-pipelines

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

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

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

方法一:

Write-Host "##vso[task.setvariable variable=A;]2"
Run Code Online (Sandbox Code Playgroud)

方法二:

$env:A = 2
Run Code Online (Sandbox Code Playgroud)

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

这个问题还有其他解决办法吗?

jes*_*ing 1

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

格式如下:

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

yaml

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

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

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


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