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
Take a look at the Apache Ivy project (http://ant.apache.org/ivy/). It handles project dependencies very well, and it has a plugin for Hudson. From the way you describe the problem, I think this solution would work for you.
I think the Join Plugin, is what you are looking for. so you setup the A-Trigger job who triggers B,C,D and waits until all are finished and than A gets triggered.
I have a similar project layout and found after a little bit research the following answeranswer How do I trigger another job from hudson as a pre-build step?.
A plugin which will perhaps work in the future is the PreBuild Plugin.
精彩评论