Ligio
Ligio

Reputation: 627

Jenkins: Sharing variables in MultiJob

I'm using Jenkins for testing/build purposes, so I created a MultiJob project with this configuration:

  1. Test Job
  2. Build Job
  3. Install Job

The MultiJob is launched from the Master Jenkins, but other jobs are launched from other Nodes. The Build Job executes a shell script which creates the BUILD_ID. Now, I want the BUILD_ID to be passed as parameter to the Install Job. How can I do that? My only choice is to use a property file?

Thanks a lot

Upvotes: 10

Views: 23751

Answers (4)

sattva_venu
sattva_venu

Reputation: 715

You can pass the parameter BUILD_ID by using Predefined parameters option in the multi-job phase.

Steps are as follows:

  • Go to configure page, by clicking on Configure link of your multijob
  • Click on Advanced button of the job where you want to pass the parameter;
  • Click on Add Parameters, select Predefined parameters. Then create a parameter name of your own choice and assign the BUILD_ID to it;
  • Create the same parameter by enabling This build is parameterized option in downstream job where you want to receive the defined parameter. Then you can use the same in your script.

Upvotes: 6

Aefix
Aefix

Reputation: 177

The question asks how to pass values between jobs for MultiJob projects, not Parameterized Trigger. Parameterized Trigger might not be a good solution because the downstream job will be executed outside of the scope of the MultiJob parent. To pass variables between MultiJob sub-jobs,

  1. Write variables to a property file in the first sub-job
  2. "Archive the artifacts" as post-build action in the first sub-job
  3. Between the first and second sub-jobs, insert an "Copy artifacts from another project" build. Set Project Name to the name of your first sub-job and Which Build to "Build triggered by current MultiJob build". Add your property file in "Artifacts to copy".
  4. In your second sub-job, under "Advanced...", Add parameters -> Parameters from properties file, and enter your property file name there. Your second phase will now have variables passed from your first phase.

Upvotes: 12

Technext
Technext

Reputation: 8107

To use the suggestion i am going to describe, you will need Parameterized Trigger plugin. One way to pass custom parameter to a downstream job is by storing the key & value pair (key=value) in a file and specifying the same file by selecting Parameters from properties file option while calling downstream (in this example, job B) job. Refer the screenshot below:

enter image description here

Now you can access the variable in downstream job 'B' by using $BUILD_ID. You would also like to enable the option Don't trigger if any files are missing.

Upvotes: 3

AltF4_
AltF4_

Reputation: 2470

First you need add to the "install job" a string parameter called "BUILD_ID" and then once your build job is done you can "Trigger Parametrized build on on other project " and add the parameter of the next build being the BUILDID=%BuildID%

For more info on paramterized job on Jenkins read the following link: https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build

you might need to install a plugin for that. Link above.

Upvotes: 1

Related Questions