I have the following project layout:
- WAR Project A
- Upstream Projects
- Dependency B
- Dependency C
- Dependency D
- Upstream Projects
I’m looking to setup A so that every time I want to trigger a build, it will first build B, C, and D. If either builds for B, C, or D fail then A’s build should fail as well.
It seems like a common build case, but I’m not sure how to accomplish it. There are the following options but they don’t seem to have the right relationship:
- Build Triggers – Build after other projects are built
- Will build the current project after some upstream projects, but I need to control the build from this project since I’m doing a WAR deployment. I just want to always build dependencies first.
- Post-build Actions – Build other projects
- Will build projects after this one, but that’s backwards for what I want to do.
Is there a build configuration in Hudson (or through a plugin) that will work for me?
This came up on the Hudson mailing list very recently. There is no direct support for this type of build configuration in Hudson.
See this thread:
http://jenkins.361315.n4.nabble.com/On-demand-build-dependency-handling-simple-2-job-build-td624395.html
You could use the Join plugin to create a ‘build+deploy’ job. It would have B,C and D as downstream projects, and then ‘A’ would become the join target.
Thus B C and D would need to complete successfully. If so, then the plain ‘deploy’ job of A would be launched. If there were any error, A would not launch. This is effectively the same as what you are asking for.
You can read about the join plugin here:
http://wiki.hudson-ci.org/display/HUDSON/Join+Plugin