Triggering different downstream jobs via templates in Jenkins Job Builder

522 Views Asked by At

I'm trying to trigger one or more downstream jobs using a job template. A summary of my definition:

- job-template:
    name: something-{app}-build
    project-type: freestyle
    defaults: global
    block-downstream: true
    scm:
      - git:
          url: url
          branches:
            - 'master'
          excluded-users:
            - Jenkins
    builders:
      !include: templates/build-and-publish.yml
    publishers:
      - postbuildscript:
          builders:
            !include: templates/docker-build-and-push-to-ecr.yml
          script-only-if-succeeded: True
          mark-unstable-if-failed: True
      - trigger-parameterized-builds:
        - project: 'deploy-dev-ecs-service'
          condition: SUCCESS
          predefined-parameters: |
                                  service={app}
                                  envparams={envparams}

- project:
    name: release-to-ecr
    type: app
    envparams: ''
    app:
      - app-1
      - app-2:
      - app-3:
          envparams: 'FOO=42'
    jobs:
      - 'something-{app}-build'

Now this works, but I need to trigger different downstream jobs based on the app. This means triggering deploy-dev-ecs service multiple times with multiple parameters. For example:

app:
    - app-1:
         - project: deploy-dev-ecs-service
           service: 'app-1'
           envparams: 'foo=bar'
    - app-2:
         - project: deploy-dev-ecs-service
           service: 'app-2.2'
           envparams: 'x=2'
         - project: deploy-dev-ecs-service               
           service: 'app-2.3'
           envparams: 'x=3'

Essentially, I need to control which downstream job(s) get triggered based on
the project parameters. Is there a way to do this?

0

There are 0 best solutions below