gpt4 book ai didi

azure-pipelines - 使用天蓝色管道判断模板中是否存在变量

转载 作者:行者123 更新时间:2023-12-03 23:03:10 24 4
gpt4 key购买 nike

我正在尝试找出一种方法来执行以下操作

variables:
${{ if eq(variables['var-a'], exists_and_is_set) }}:
namespaceName: $(var-a)
${{ if ne(variables['var-a'], exists_and_is_set) }}:
namespaceName: $(var-b)
基本上,如果变量 A 存在并且有一个值 != null != '' 然后使用它,否则使用另一个变量。这里的脚本非常简单,我找不到方法来做到这一点。原因是我正在做一个改变,在数百个使用这个模板的 cicd 管道中,只有 10 个左右会使用 var-a ,所以我试图找到一种方法来实现逻辑,而不必更新数百个管道以包含他们不会使用的东西。

最佳答案

您可以尝试使用 ''表示不存在或没有值(value)。
例如:eq(variables['var-a'], '')如果您使用 If 表达式 ,它可能无法实现您想要的功能。
根据我的测试,当我使用 时If 表达式 var-a 的值变量将始终不存在或为空,即使它已被创建。
所以我找到了另一种设置变量的方法,它可以按预期工作:
这是我的例子:
模板:build.yml

steps:

- script: echo "##vso[task.setvariable variable=namespaceName;]$(var-a)"
condition: ne(variables['var-a'], '')
- script: echo "##vso[task.setvariable variable=namespaceName;]$(var-b)"
condition: eq(variables['var-a'], '')
Azure 管道.yml
....
steps:
- template: build.yml
- script: |
echo $(namespaceName)
displayName: 'Run a multi-line script'
此示例使用 Condition ExpressionLogging command .
在这种情况下,它将根据变量的值选择要运行的任务。在任务中,它将使用日志记录命令来设置变量。
var-a:空/不存在 -> 运行任务 2 -> 命名空间名称:var-b
var-a:存在 -> 运行任务 1 -> 命名空间名称:var-a

关于azure-pipelines - 使用天蓝色管道判断模板中是否存在变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64286701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com