How can I trigger another job from a jenkins pipeline (jenkinsfile) with GitHub Org Plugin? How can I trigger another job from a jenkins pipeline (jenkinsfile) with GitHub Org Plugin? jenkins jenkins

How can I trigger another job from a jenkins pipeline (jenkinsfile) with GitHub Org Plugin?


In addition to the above mentioned answers: I wanted to start a job with a simple parameter passed to a second pipeline and found the answer on http://web.archive.org/web/20160209062101/https://dzone.com/refcardz/continuous-delivery-with-jenkins-workflow

So i used:

stage ('Starting ART job') {    build job: 'RunArtInTest', parameters: [[$class: 'StringParameterValue', name: 'systemname', value: systemname]]}


First of all, it is a waste of an executor slot to wrap the build step in node. Your upstream executor will just be sitting idle for no reason.

Second, from a multibranch project, you can use the environment variable BRANCH_NAME to make logic conditional on the current branch.

Third, the job parameter takes an absolute or relative job name. If you give a name without any path qualification, that would refer to another job in the same folder, which in the case of a multibranch project would mean another branch of the same repository.

Thus what you meant to write is probably

if (env.BRANCH_NAME == 'master') {    build '../other-repo/master'}


You can use the build job step from Jenkins Pipeline (Minimum Jenkins requirement: 2.130).

Here's the full API for the build step: https://jenkins.io/doc/pipeline/steps/pipeline-build-step/

How to use build:

  • job: Name of a downstream job to build. May be another Pipeline job, but more commonly a freestyle or other project.
    • Use a simple name if the job is in the same folder as this upstream Pipeline job;
    • You can instead use relative paths like ../sister-folder/downstream
    • Or you can use absolute paths like /top-level-folder/nested-folder/downstream

Trigger another job using a branch as a param

At my company many of our branches include "/". You must replace any instances of "/" with "%2F" (as it appears in the URL of the job).

In this example we're using relative paths

    stage('Trigger Branch Build') {        steps {            script {                    echo "Triggering job for branch ${env.BRANCH_NAME}"                    BRANCH_TO_TAG=env.BRANCH_NAME.replace("/","%2F")                    build job: "../my-relative-job/${BRANCH_TO_TAG}", wait: false            }        }    }

Trigger another job using build number as a param

build job: 'your-job-name',     parameters: [        string(name: 'passed_build_number_param', value: String.valueOf(BUILD_NUMBER)),        string(name: 'complex_param', value: 'prefix-' + String.valueOf(BUILD_NUMBER))    ]

Trigger many jobs in parallel

Source: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/

More info on Parallel here: https://jenkins.io/doc/book/pipeline/syntax/#parallel

    stage ('Trigger Builds In Parallel') {        steps {            // Freestyle build trigger calls a list of jobs            // Pipeline build() step only calls one job            // To run all three jobs in parallel, we use "parallel" step            // https://jenkins.io/doc/pipeline/examples/#jobs-in-parallel            parallel (                linux: {                    build job: 'full-build-linux', parameters: [string(name: 'GIT_BRANCH_NAME', value: env.BRANCH_NAME)]                },                mac: {                    build job: 'full-build-mac', parameters: [string(name: 'GIT_BRANCH_NAME', value: env.BRANCH_NAME)]                },                windows: {                    build job: 'full-build-windows', parameters: [string(name: 'GIT_BRANCH_NAME', value: env.BRANCH_NAME)]                },                failFast: false)        }    }

Or alternatively:

    stage('Build A and B') {            failFast true            parallel {                stage('Build A') {                    steps {                            build job: "/project/A/${env.BRANCH}", wait: true                    }                }                stage('Build B') {                    steps {                            build job: "/project/B/${env.BRANCH}", wait: true                    }                }            }    }