我正在尝试简化复杂的管道,其中一部分是使用自定义条件仅执行部分管道(主要是出于测试目的,也出于某些功能原因)。
我想嵌套表达式,但似乎无法使其工作,因为似乎未对变量进行求值。示例:
变量:
PerformSonar:false
(可在队列时间设置)
expPerformSonar:and(succeeded(), eq(PerformSonar, true))
然后在声纳步骤中,将自定义条件设置为
eq(variables['expPerformSonar'], true)
//始终为假,变量扩展为文本
我尝试了多种语法变体,尝试使用编译时和运行时表达式语法,各种事情都失败了
示例:
eq('${{ variables['expPerformSonar'] }}', true)
-计算为假,变量未扩展为文本
唯一可行的方法是将完整表达式放在“自定义条件”字段中。
有什么方法可以分解条件并在经典管道的嵌套情况下使用它们?
答案 0 :(得分:0)
有什么方法可以分解条件并在嵌套中使用它们 经典管道中出现什么情况?
定义expPerformSonar: and(succeeded(), eq(PerformSonar, true))
不是用表达式定义变量的正确方法。
检查Expressions文档:
# Two examples of expressions used to define variables
# The first one, a, is evaluated when the YAML file is parsed into a plan.
# The second one, b, is evaluated at run time.
# Note the syntax ${{}} for parse time and $[] for runtime expressions.
variables:
a: ${{ <expression> }}
b: $[ <expression> ]
无论是经典管道还是Yaml管道,如果要使用表达式定义变量。您应该选择格式${{ <expression> }}
或$[ <expression> ]
而不是直接表达式。
这是我针对您的情况的工作示例:
1。您的变量可以是:
执行声纳:false
expPerformSonar :$[ eq(variables['PerformSonar'], 'true') ]
2。条件可能是:
and(succeeded(),eq(variables['expPerformSonar'], true))
Ps:建议在任务/步骤的情况下直接使用succeeded()
,而不是在定义变量时使用它。希望能有所帮助:)