问题
I'm using Jenkins for testing/build purposes, so I created a MultiJob project with this configuration:
- Test Job
- Build Job
- 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
回答1:
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:

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
.
回答2:
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,
- Write variables to a property file in the first sub-job
- "Archive the artifacts" as post-build action in the first sub-job
- 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".
- 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.
回答3:
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,
回答4:
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.
来源:https://stackoverflow.com/questions/25929774/jenkins-sharing-variables-in-multijob