我们有一个 Jenkins 设置(目前不使用 Jenkins Job Builder 管理),其中每个 Web 项目都有 5 个非常相似的 Jenkins 作业。这是一个简化的 Jenkins Job Builder yaml 文件,可以满足我们的需求:
- defaults:
name: global
project-type: 'freestyle'
disabled: false
buildTargets: 'build'
- job-template:
name: '{jobNameFirstSegment}-{jobNameSecondSegment}'
defaults: global
builders:
- ant:
targets: '{buildTargets}'
buildfile: 'build.xml'
- project:
name: lorem
jobNameFirstSegment:
- foo:
displayNameFirstSegment: 'Foo'
urlGitRepository: 'git@bitbucket.org:mycompany/foo.git'
- bar:
displayNameFirstSegment: 'Bar'
urlGitRepository: 'git@bitbucket.org:mycompany/bar.git'
- baz:
displayNameFirstSegment: 'Baz'
urlGitRepository: 'git@bitbucket.org:mycompany/baz.git'
jobNameSecondSegment:
- lorem:
buildTargets: 'build-lorem'
- ipsum:
buildTargets: 'build-ipsum'
- dolor:
buildTargets: 'build-dolor'
- sit:
buildTargets: 'build-sit'
- amet:
buildTargets: 'build-amet'
jobs:
- '{jobNameFirstSegment}-{jobNameSecondSegment}'
此 yaml 文件会产生 15 个 Jenkins 作业 - 均未禁用:
- 愚人节
- foo-ipsum
- 吃货
- 坐坐
- 富美特
- 巴洛雷姆
- bar-ipsum
- 酒吧多尔
- 酒吧坐
- 酒吧
- 巴兹洛雷姆
- baz-ipsum
- 巴兹多洛尔
- 坐坐
- 巴兹阿梅特
这种设置是否可以禁用特定的 Jenkins 作业?我无法找到如何覆盖例如 Jenkins 作业“foo-lorem”的“禁用”属性。如何做到这一点?
事实上,如果需要,我们需要能够覆盖任何 Jenkins 作业的任何属性。这是可行的吗?如何?