ZUUL作业配置如何复用已有文件列表变量并追加新元素
问题原因
你当前的写法存在两个问题:
- YAML语法层面不支持直接在锚点列表引用后追加元素,你的
bar作业中- *.xml的缩进层级错误,被解析为irrelevant_files的子属性而非列表成员,触发解析错误。 - YAML原生的合并键
<<仅支持映射(字典)类型合并,不直接支持列表类型的追加合并。
可行解决方案
方案1:同列表内引用锚点直接追加
将锚点引用和新增元素放在同一个列表层级下,YAML解析器会自动展开锚点对应的列表内容,和新增项合并为新的列表:
- job: name: base-job vars: my_set_of_files: &myFileSet - ^.README.* - ^.*.md - job: name: foo parent: base-job irrelevant_files: *myFileSet - job: name: bar parent: base-job irrelevant_files: *myFileSet - *.xml
方案2:Zuul版本支持下用运算符追加
如果你使用的是Zuul v3及以上版本,其内置的YAML解析器支持列表追加运算符,可以直接简写为:
- job: name: bar parent: base-job irrelevant_files: *myFileSet + ["*.xml"]
方案3:多锚点组合复用
如果有多个通用排除片段需要灵活组合,可以拆分为多个独立锚点按需引用:
- job: name: base-job vars: doc_excludes: &docExcludes - ^.README.* - ^.*.md xml_excludes: &xmlExcludes - *.xml config_excludes: &configExcludes - *.yml - *.ini - job: name: foo parent: base-job irrelevant_files: *docExcludes - job: name: bar parent: base-job irrelevant_files: *docExcludes *xmlExcludes - job: name: test parent: base-job irrelevant_files: *docExcludes *configExcludes
内容的提问来源于stack exchange,提问作者andi0815
相关产品推荐
相关产品推荐

