在项目或继承的作业模板级别添加额外参数
Add extra parameters at project or inherited job-template level
我正在寻找一种方法允许 jjb job-template
的某些实例添加额外的参数,或通过继承的子模板添加它们。
同样的道理也适用于任何 array/list/sequence-valued 键。我不想覆盖整个密钥,而是想附加到它。可能有一些 '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. Merge keys don't work for lists and the yaml spec doesn't plan on accepting anything like them;事实上,合并键正在逐渐弃用。
JJB 本身似乎没有提供表达 "this job-template extends this other job-template, and you should merge the parameters:
lists" 的方式。它依赖于 YAML 继承,在 JJB 本身而不是 YAML reader 中实现,但没有等效的 (findable/documented) 列表。
我怀疑 !j2
Jinja2 标签可能是可行的,但我完全不确定如何做,或者这样做是否明智。
确定这是一个普遍的需求? I had similar issues with Ansible some time ago.
到目前为止我发现的唯一方法是在包含文件中使用片段,这非常丑陋,比如(未经测试)
# 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
很遗憾,您是对的,JJB 不方便在这里提出请求。当前 JJB 最接近的是在声明变量 {obj:variable_name_must_use_underscores}
时使用 "obj:" 键
- job-template:
name: base-params
######################
# Default parameters #
######################
job_params:
#####################
# Job configuration #
#####################
parameters: '{obj:job_params}'
- project:
name: thing
jobs:
- base-params
job_params:
- string:
name: foo
default: FOO
description: Foofoo
- string:
name: bar
default: BAR
description: Baaaa
这样做是在作业模板中设置一个默认值 job_params,它将应用于作业模板的所有用户。它可以选择提供覆盖默认值 job_params 的能力,但正如您从示例中看到的那样,不幸的是,如果用户想要附加新参数,则需要重新定义默认值 job_params。
当前JJB 2.x不支持继承和扩展现有模板配置的方法,如果您覆盖,则需要覆盖整个部分。
我正在寻找一种方法允许 jjb job-template
的某些实例添加额外的参数,或通过继承的子模板添加它们。
同样的道理也适用于任何 array/list/sequence-valued 键。我不想覆盖整个密钥,而是想附加到它。可能有一些 '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. Merge keys don't work for lists and the yaml spec doesn't plan on accepting anything like them;事实上,合并键正在逐渐弃用。
JJB 本身似乎没有提供表达 "this job-template extends this other job-template, and you should merge the parameters:
lists" 的方式。它依赖于 YAML 继承,在 JJB 本身而不是 YAML reader 中实现,但没有等效的 (findable/documented) 列表。
我怀疑 !j2
Jinja2 标签可能是可行的,但我完全不确定如何做,或者这样做是否明智。
确定这是一个普遍的需求? I had similar issues with Ansible some time ago.
到目前为止我发现的唯一方法是在包含文件中使用片段,这非常丑陋,比如(未经测试)
# 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
很遗憾,您是对的,JJB 不方便在这里提出请求。当前 JJB 最接近的是在声明变量 {obj:variable_name_must_use_underscores}
时使用 "obj:" 键- job-template:
name: base-params
######################
# Default parameters #
######################
job_params:
#####################
# Job configuration #
#####################
parameters: '{obj:job_params}'
- project:
name: thing
jobs:
- base-params
job_params:
- string:
name: foo
default: FOO
description: Foofoo
- string:
name: bar
default: BAR
description: Baaaa
这样做是在作业模板中设置一个默认值 job_params,它将应用于作业模板的所有用户。它可以选择提供覆盖默认值 job_params 的能力,但正如您从示例中看到的那样,不幸的是,如果用户想要附加新参数,则需要重新定义默认值 job_params。
当前JJB 2.x不支持继承和扩展现有模板配置的方法,如果您覆盖,则需要覆盖整个部分。