Azure DevOps YAML同时配置变量组与自定义变量为何报错
报错原因
你遇到的共存报错是两个问题共同导致的:
- 核心原因是Azure DevOps Pipelines的
variables配置节点不支持两种YAML结构混用:一种是带-前缀的序列/列表格式,专门用来引用变量组、变量模板;另一种是直接写变量名: 值的键值对映射格式,用来定义普通内联变量。两种格式在同一个variables节点下只能选一种用,你原来引用docker-settings变量组用的是序列格式,下一行直接写isMaster: xxx属于映射格式,YAML解析时会直接报类型不匹配错误。 - 次要原因是你写的
isMaster条件表达式本身语法残缺,末尾缺少闭合的单引号、右括号,也没有写全要匹配的分支完整路径,完整的主分支判断表达式应该是$[eq(variables['Build.SourceBranch'], 'refs/heads/master')]。
正确写法
如果需要同时引用变量组和自定义条件变量,必须把所有配置都统一成序列格式,自定义内联变量要按照name+value的结构作为列表项传入,修正后的可运行配置如下:
variables: - group: docker-settings - name: isMaster value: $[eq(variables['Build.SourceBranch'], 'refs/heads/master')]
补充说明:你之前单独删除变量组配置时,整个
variables块就全是键值对映射格式,符合语法要求所以能正常运行;单独删除isMaster配置时,整个variables块全是序列格式的变量组引用,也符合语法要求,所以两种单留的场景都不会触发报错。
内容的提问来源于stack exchange,提问作者itye1970
相关产品推荐
相关产品推荐

