What I want to accomplish is to checkout code from develop
branch, merge it to master
branch, build app.war
, run tests and if tests succeed push to master
branch.
Tests should be run in separate job which needs app.war
.
My current setup is as follows:
Main
checks out from develop
, merges it to master
and builds app.war
Main
triggers job Test
in Post build step (Test
needs app.war
previously built)Test
succeeds, Main
pushes to master
branch in Post build action
I tried to use Copy Artifact Plugin but the problem is that with it, I can only archive artifact in Post build action while I am triggering Test
in Post build step.
How to pass app.war
to Test
job? Is it possible to do with Copy Artifact Plugin?
You can put a wrapper job around it and have the Build job and the Test job called as build step by using Trigger/call builds on other projects. Since the build is encapsuled in its own job now, you can archive its artifacts and copy them over to the Test
job.
Another way would be to just share a workspace between build and test.
A neat way to pass a file to a downstream job is, to pass it as parameter with the help of the Parameterized Trigger Plugin.
You push a file into your downstream job's workspace simply by selecting the parameter factory For every matching file, invoke one build in a build step Trigger/call builds on other projects. There you specify the target file (wildcards allowed) and the name it should get in the child workspace.
Note: Your downstream job does not need to have the option This build is parameterized set, the file will be copied either way. Edit: This might not work anymore, see comments.
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