如何在Azure DevOps管道中正确使用表达式结果作为布尔值?

7
我试图使用 or 表达式在模板中定义一个布尔值,如下所示:
parameters:
  - name: A
    default: true
  - name: B
    default: false

stages:
  - template: bacon.yml@template
    parameters:
      booleanParameter: or(eq(${{ parameters.A }}, true), eq(${{ parameters.B}}, true))

在我的理解中,这应该可以正常工作,但我一直遇到相同的错误:
The 'booleanParameter' parameter value 'or(eq(True, true), eq(False, true))' is not a valid Boolean.

我尝试了一些语法的小变化,但它们都导致了相同的错误。

这里我错过了什么?

1个回答

13
你应该使用模板表达式来包装整个表达式:
booleanParameter: ${{ or(eq(parameters.A, true), eq(parameters.B, true)) }}

它实际上只是返回相同的错误:“'booleanParameter'参数值'or(eq(True,'True'),eq(False,'True'))'不是有效的布尔值。” - Rogerio Schmitt
我修改了我的回复。现在它通过了验证并且可以正常工作。 - Krzysztof Madej
1
我可以确认 eq 表达式需要像 true 这样的布尔值,而不是像 'true' 这样的字符串。 - DvS
2
@DvS 你可以传递任何东西。如果你使用eq,它意味着相等。因此,“true”等于“true”,而true等于true。如果你执行eq(parameters.B, true),B应该是true。但是,如果你执行eq(parameters.B, 'true'),参数应该是"true"。 - Enrico

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接