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 获取整个构建定义,然后将其放回更改的变量值。
这个问题还有其他解决办法吗?
如果您专门关注不断增加的数字,那么您也可以使用计数器。这些仅适用于基于 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 来更新整个定义,尽管要解决有关并行性的所有可能性确实很困难。