I have two jobs in Jenkins:
build master
- this builds the code and creates an artifactdeploy master
- this deploys the artifactCurrently, deploy master
has "Copy artifacts from another project" build step using "latest successful build".
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.
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' });
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
How do I configure this properly so I can specify a build number (or some other identifier) when deploying?
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.
Next you need to install the Copy Artifact plugin in the Manage Plugins section of Jenkins. Go to "[PROJECT-NAME]-Output" > configure and add a new build step. Because you have installed the Copy Artifact plugin you should see an option called 'copy artifacts from another project' in the drop down menu.
How to Create an Artifact. In Jenkins, an artifact is created in either Freestyle projects or Pipeline projects. In Freestyle, add the “Archive the artifacts” post-build step. In Pipeline, use the archiveArtifacts step.
Job import plugin can be used to copy jobs from other jenkins instance.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With