jenkins-job-builder/tests/yamlparser/fixtures/second_order_parameter_interpolation001.yaml
Wayne 0a2e4ed961 Interpolate params inside of params.
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
2015-01-31 10:48:58 -08:00

14 lines
289 B
YAML

- job-template:
name: '{value-stream}_{pipeline-type}'
display-name: '{value-stream}_{pipeline-type}'
- project:
name: derp
jobs:
- '{value-stream}_{pipeline-type}':
pipeline-type: 'foo'
- defaults:
name: 'global'
value-stream: 'experimental'