azure - 如何更改管道变量以在 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 获取整个构建定义,然后将其放回并更改变量的值。
这个问题还有其他解决方案吗?
解决方案
如果您特别关注不断增加的数字,那么您也可以使用计数器。这些仅适用于基于 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 来更新整个定义是可行的,尽管很难解决所有关于并行性的可能性。
推荐阅读
- javascript - jQuery DataTables 复选框扩展无法在 IE 浏览器上正确检索所选数据
- python - blob.noun_phrases 因 ConllExtractor() 而失败
- jquery - 将多个复选框值保存到 sql 数据库
- scala - scala:如何获取数据框中列的最大值
- c# - 使用 identiyserver4 授权信号器核心集线器
- wpf - 如何从 wpf 调用 https api
- javascript - 点击时加载不同的 api 内容(JS)
- javascript - 如何渲染句子中随机设置的粗体文本
- android - RecyclerView 在经常更新时因 IndexOutOfBoundException 而崩溃
- javascript - 我应该将用户的个人资料图像保存在会话存储中以避免多次服务器调用吗?