Azure DevOps流水线条件执行异常:branches变量类型疑问
Azure DevOps流水线变量类型问题解析
你的branches变量通过$[ or(...) ]表达式生成,它的类型是布尔值,不是字符串。
为什么条件不执行?
你写的${{ if eq(variables.branches, 'true') }}是在把布尔值和字符串'true'做相等比较,两者类型不匹配,结果永远是false,所以条件分支不会触发。
而你手动设置branches: true时能正常工作,分两种情况:
- 若你是在YAML里直接写
branches: true,这个true是布尔字面量,和表达式生成的布尔值类型一致——如果你此时能正常执行,大概率是手动调整了条件写法(比如直接用${{ if variables.branches }}),而非继续用字符串比较。 - 若你是在流水线变量面板中输入
true,这个值会被解析为字符串,此时和'true'比较自然会生效。
正确的写法
要让条件正确执行,直接用布尔值作为判断条件即可,或者和布尔字面量true比较:
# 写法1:直接判断布尔值 ${{ if variables.branches }} # 写法2:和布尔字面量比较 ${{ if eq(variables.branches, true) }}
内容的提问来源于stack exchange,提问作者Ayush Singh
相关产品推荐
相关产品推荐

