0a2e4ed961
This patch enables parameters to be expanded inside of other parameters. For instance: - job-template: name: '{value-stream}_{pipeline_type}_foo' builders: - shell: 'echo "I am foo job!"' publishers: - trigger-parameterized-builds: - project: '{downstream}' current-parameters: False condition: ALWAYS git-revision: True - job-template: name: '{value-stream}_{pipeline_type}_bar' builders: - shell: 'echo "I am bar job!"' publishers: - trigger-parameterized-builds: - project: '{downstream}' current-parameters: False condition: ALWAYS git-revision: True - job-template: name: '{value-stream}_{pipeline_type}_baz' builders: - shell: 'echo "I am baz job!"' publishers: - trigger-parameterized-builds: - project: '{downstream}' current-parameters: False condition: ALWAYS git-revision: True - job-group: name: 'pipeline2' pipeline_type: 'p2' jobs: - '{value-stream}_{pipeline_type}_foo': downstream: '{value-stream}_{pipeline_type}_bar' - '{value-stream}_{pipeline_type}_bar': downstream: '{value-stream}_{pipeline_type}_baz' - '{value-stream}_{pipeline_type}_baz': - job-group: name: 'pipeline1' pipeline_type: 'p1' jobs: - '{value-stream}_{pipeline_type}_baz': downstream: '{value-stream}_{pipeline_type}_bar' - '{value-stream}_{pipeline_type}_bar': downstream: '{value-stream}_{pipeline_type}_foo' - '{value-stream}_{pipeline_type}_foo': - project: name: derp jobs: - 'pipeline1': value-stream: - experimental - staging - 'pipeline2': value-stream: - experimental - staging - production Prior to this commit, the setup above was not possible because the `downstream` defined as parameters to be passed to job templates in the job groups would not have the `value-stream` and `pipeline-type` parameters interpolated. The trigger-parameterized-jobs `project` value for each of the 15 jobs created with this setup would all look something like `{value-stream}_{pipeline_type}_foo` which does not actually point to any particular job. The only way I was previously able to specify a downstream job with parameters was to put the `{value-stream}_{pipeline_type}_foo` string directly in the job-template which meant that job templates were statically bound to each other--I had no reasonable way to re-order or easily select subsets of the jobs at the job-group or project level as can be seen here in the difference between `pipeline1` and `pipeline2`. Change-Id: I26dfb112cd4842c40c3d561f8de89f7654a07b8f
48 lines
1.2 KiB
YAML
48 lines
1.2 KiB
YAML
- job-template:
|
|
name: '{value-stream}_{project-id}_foo'
|
|
display-name: '{value-stream} {project-id} foo'
|
|
publishers:
|
|
- trigger-parameterized-builds:
|
|
- project: '{downstream}'
|
|
current-parameters: False
|
|
condition: ALWAYS
|
|
git-revision: True
|
|
|
|
- job-template:
|
|
name: '{value-stream}_{project-id}_bar'
|
|
display-name: '{value-stream} {project-id} bar'
|
|
publishers:
|
|
- trigger-parameterized-builds:
|
|
- project: '{downstream}'
|
|
current-parameters: False
|
|
condition: ALWAYS
|
|
git-revision: True
|
|
|
|
- job-group:
|
|
name: 'pipeline2'
|
|
project-id: 'p2'
|
|
jobs:
|
|
- '{value-stream}_{project-id}_foo':
|
|
downstream: '{value-stream}_{project-id}_bar'
|
|
- '{value-stream}_{project-id}_bar':
|
|
|
|
- job-group:
|
|
name: 'pipeline1'
|
|
project-id: 'p1'
|
|
jobs:
|
|
- '{value-stream}_{project-id}_bar':
|
|
downstream: '{value-stream}_{project-id}_foo'
|
|
- '{value-stream}_{project-id}_foo':
|
|
|
|
- project:
|
|
name: derp
|
|
jobs:
|
|
- 'pipeline1':
|
|
value-stream: 'production'
|
|
- 'pipeline2':
|
|
value-stream: 'experimental'
|
|
|
|
- defaults:
|
|
name: 'global'
|
|
downstream: ''
|