在项目或继承的作业模板级别添加额外的参数

时间:2018-10-31 13:31:05

标签: jenkins yaml jenkins-job-builder

我正在寻找一种方法,允许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:

1 个答案:

答案 0 :(得分:0)

不幸的是,您是对的,JJB并不方便在此处提出的请求。在声明变量{obj:variable_name_must_use_underscores}时,使用当前JJB可获得的最接近的结果是使用“ obj:”键。

done

它的作用是在作业模板中设置默认的job_params,它将应用于作业模板的所有用户。可选地,它提供了覆盖默认job_params的功能,但是从示例中可以看出,不幸的是,如果用户希望随其附加新参数,则用户需要重新定义默认job_params。

当前的JJB 2.x不支持继承和扩展现有模板配置的方法,如果要覆盖,则需要覆盖整个部分。