【发布时间】:2019-04-04 16:35:56
【问题描述】:
我正在寻找一种方法来允许 jjb job-template 的某些实例添加其他参数,或者通过继承的子模板添加它们。
同样的事情确实适用于任何数组/列表/序列值键。我不想覆盖整个密钥,而是想附加到它。可能有一些“n”级深,需要 YAML 锚点和合并键之类的东西。
所以要么:
- 实例化
job-template的project可以添加自己的额外parameters:;或 - 继承/扩展另一个
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
或者这个:
- 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 继承创建一个子 job-template,然后在项目中使用它。但这看起来行不通,因为yaml doesn't have a way to extend/append sequences/lists。合并键不适用于列表and the yaml spec doesn't plan on accepting anything like them;事实上,merge 键正在逐渐被弃用。
JJB 本身似乎没有提供一种方式来表示“此作业模板扩展了此其他作业模板,您应该合并 parameters: 列表”。它依赖于 YAML 继承,在 JJB 本身而不是 YAML 阅读器中实现,但没有等效的(可查找/记录的)列表。
我怀疑!j2 Jinja2 标签可能有可能,但我完全不确定如何使用,或者这样做是否明智。
这当然是一种常见的需求? I had similar issues with Ansible some time ago.
到目前为止,我发现的唯一方法是在包含文件中使用 sn-ps,这非常丑陋,就像(未经测试)
# File base-template-params.yml.inc
- string:
name: foo
default: FOO
description: Foofoo
# File templates.yml
- job-template: &base-template
name: base-params
parameters:
!include base-template-params.yml.inc
- job-template:
name: more-params
<< : *base-template
parameters:
!include base-template-params.yml.inc
- string:
name: bar
default: BAR
description: Baaaa
- project:
name: thing
jobs:
- more-params
【问题讨论】:
标签: jenkins yaml jenkins-job-builder