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

Rog*_*itt 7 azure-devops azure-pipelines azure-pipelines-yaml

我尝试使用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))
Run Code Online (Sandbox Code Playgroud)

在我看来,它应该工作得很好,但我不断收到同样的错误:

The 'booleanParameter' parameter value 'or(eq(True, true), eq(False, true))' is not a valid Boolean.
Run Code Online (Sandbox Code Playgroud)

我尝试了一些语法的小变化,所有这些都会导致相同的错误。

我在这里缺少什么?

Krz*_*tof 15

您应该使用模板表达式来包装整个表达式:

booleanParameter: ${{ or(eq(parameters.A, true), eq(parameters.B, true)) }}
Run Code Online (Sandbox Code Playgroud)

  • @DvS你可以传递任何东西。如果你执行 eq 则表示等于。所以“真”等于“真”,真等于真。如果你执行 eq(parameters.B, true) B 应该为 true。但如果你这样做 eq(parameters.B, 'true') 参数应该是“true” (2认同)