如何在YAML中声明或使用布尔变量?



我正在使用Azure Devops中的任务模板,就像下面的代码片段

- task: sampletask@0
inputs:
flag1: true
flag2: true

这里的flag1&2应该是布尔值。但是,不是将其硬编码为'true',而是有一个选项来传递字符串作为外部变量来设置值。

但是当我尝试在外部声明externalVar1&2为'true'时,并尝试:

- task: sampletask@0
inputs:
flag1: $[$(externalVar1), 'true')]  --- Incorrect type. Expected "boolean".
flag2: $[$(externalVar2), 'true')]  --- Incorrect type. Expected "boolean".

所以有一个可行的方法来评估一个外部字符串表达式,说$(expr),成布尔变量/对象,并传递到目标标志参数,期望布尔类型?

Azure DevOps管道概念中的变量始终是字符串类型,不包括布尔类型。您只能在脚本中处理布尔类型(您可以在脚本中将字符串转换为布尔类型并在那里处理它们)。

如果要为以后的操作或任务和作业计算变量值,可以参考自定义条件。

and(succeeded(), eq(variables['Flag1'], 'value'))

在Azure DevOps中,您可以指定变量条件

例如:

variables:
- name: testEmpty
value: ''
jobs:
- job: A
steps:
- script: echo testEmpty is blank
condition: eq(variables.testEmpty, '')

更多信息见文档

最新更新