问题
Setup
I have two jobs in Jenkins:
build master
- this builds the code and creates an artifactdeploy master
- this deploys the artifact
Currently, deploy master
has "Copy artifacts from another project" build step using "latest successful build".
My Goal
I want to change this step from "latest successful build" to "specified by a build parameter" so that I can select a specific build when deploying without modifying the configuration of deploy master
job each time.
What I've tried
First, I changed to "specified by a build parameter".
Then I checked the box next to "This project is parameterized" and added a string parameter for BUILD_SELECTOR
.
Then I selected build and enter the input 47
which is a build number from the build master
job.
Additionally I tried the api call
$.ajax({
type: 'POST',
url: 'https://jenkins/job/deploy%20master/build?token=abc7f5abc0c45abcea0646ed858abcde&BUILD_SELECTOR=47'
});
Result
Both times it failed with the following output:
Started by user styfle
[EnvInject] - Loading node environment variables.
Building in workspace C:\Jenkins\jobs\deploy master\workspace
ERROR: Unable to find a build for artifact copy from: build master
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
Finished: FAILURE
Question
How do I configure this properly so I can specify a build number (or some other identifier) when deploying?
Update with solution
My solution thanks to Gerold's answer was to add a "Build selector for Copy Artifact" parameter and use a new environment variable to link to my string parameter I already added.
回答1:
There is just one workspace per project/job in Jenkins. The directories of builds contain just information about the builds and their results.
The root directories of both are specified in Manage Jenkins → Configure System → Advanced....
To deploy an artifact of a previous build you have to copy it to somewhere else in build master
and access it there from deploy master
later.
UPDATE:
See the inline help for Which build → Parameter Name:
A parameter with this name should be added in the build parameters section above. There is a special parameter type for choosing the build selector.
Use this Build selector for Copy Artifact instead of a String Parameter.
回答2:
Add following in downstream project. "Build selector for Copy Artifact" instead of a "String Parameter"
Copy artifacts from another project
Thats it. Click "Build with Parameters" and pass build number
来源:https://stackoverflow.com/questions/37486244/how-to-pass-build-artifact-into-another-job-in-jenkins