我正在寻找一种方法,允许jjb job-template
的某些实例添加其他参数,或者通过继承的子模板添加它们。
同一件事实际上适用于任何数组/列表/序列值键。我不想覆盖整个密钥,而是要附加到它。可能有一些“ n”级深度,需要YAML锚点和合并键之类的东西。
所以:
project
的{{1}}可以添加自己的额外job-template
;或parameters:
的{{1}}可以添加额外的参数而不会覆盖已经指定的参数。我想要一个工作版本:
job-template
或者这个:
job-template
或者这个:
- job-template: &base-template
name: base-params
parameters:
- string:
name: foo
default: FOO
description: Foofoo
- project:
name: thing
jobs:
- more-params
parameters:
- !APPEND # This is wrong
- string:
name: bar
default: BAR
description: Baaaa
我研究过如何让孩子- job-template: &base-template
name: base-params
parameters:
- string:
name: foo
default: FOO
description: Foofoo
- job-template:
name: more-params
<< : *base-template
parameters:
- !APPEND # This is wrong
- string:
name: bar
default: BAR
description: Baaaa
- project:
name: thing
jobs:
- more-params
继承YAML,然后在项目中使用它。但这似乎不起作用,因为yaml doesn't have a way to extend/append sequences/lists。合并键不适用于列表and the yaml spec doesn't plan on accepting anything like them;实际上,合并键已被逐渐淘汰。
JJB本身似乎没有提供一种方式来表示“此作业模板扩展了另一个作业模板,因此您应该合并- job-template: &base-template
name: base-params
parameters: &base-template-parameters
- string:
name: foo
default: FOO
description: Foofoo
- job-template:
name: more-params
<< : *base-template
parameters:
- << &base-template-parameters # THIS IS WRONG
- string:
name: bar
default: BAR
description: Baaaa
- project:
name: thing
jobs:
- more-params
列表”。它依赖于YAML继承,它是通过JJB本身而不是YAML阅读器实现的,但是没有等效的(可找到/已记录)列表。
我怀疑使用job-template
Jinja2标签是可能的,但是我完全不确定如何做或者是否明智。
这肯定是普遍需要吗? I had similar issues with Ansible some time ago。
到目前为止,我发现这样做的唯一方法是在包含文件中使用摘要,这很丑陋,就像(未经测试的)
parameters:
答案 0 :(得分:0)
不幸的是,您是对的,JJB并不方便在此处提出的请求。在声明变量{obj:variable_name_must_use_underscores}时,使用当前JJB可获得的最接近的结果是使用“ obj:”键。
done
它的作用是在作业模板中设置默认的job_params,它将应用于作业模板的所有用户。可选地,它提供了覆盖默认job_params的功能,但是从示例中可以看出,不幸的是,如果用户希望随其附加新参数,则用户需要重新定义默认job_params。
当前的JJB 2.x不支持继承和扩展现有模板配置的方法,如果要覆盖,则需要覆盖整个部分。