I found most people talk about Hudson for simple and free continuous integration. Now personally I'm not fond of its interface which I find very messy, and I found almost no one talking about CDash -- I love CMake and CTest seem nice too.
Could you give for your favorite continuous integration server/builder/tester/dashboard a short description of its strong and weak decision points.
Here is a list of free (in the broad meaning for a small-medium project) those I've heard of, or used:
- CDash
- CruisonControl
- Hudson
- Jenkins - Hudson fork that has largely replaced Hudson.
- TeamCity
Environment: C++, C#, Python, PHP... can be various.
PS: Preferably give one answer per tool or c开发者_StackOverflow中文版omment on it there is already one.
I can't comment on CDash or TeamCity, but I think CruiseControl and Hudson both have their advantages:
- CruiseControl is very well suited to projects that build with Ant or Maven, and has a much clearer UI if you have a large number of projects. It also does a number of (IMO) obvious things by default, like including a change list in build emails and notifying via email on successful builds as well as failed ones, that Hudson doesn't do without installing and configuring extra plugins.
- I've found Hudson easier to set up for builds that use a shell script or makefile rather than Ant; it's really a generalized job control application rather than a build system. If you need to build on multiple platforms, Hudson's slave node setup is very straightforward. Hudson is definitely easier to extend, via the plugin mechanism.
For PHP projects CruiseControl + phpUnderControl is my ultimate choice. Besides, I like CC's clean interface. On the other hand, I find Hudson's plugin system really handy, for it simplifies a lot the configuration of projects, yet I agree that the front-end lacks usability.
Ideally ... CruiseControl + a plugin system OR a clean-interfaced Hudson + a port of phpUnderControl :)
We have ~ 50 projects with a few targets each. I have found bitten to be very useful for our needs. It scales much better than cruise control and integrates nicely with trac.
Bitten uses Hudson style slave nodes, and we have slaves that do builds, testing and reporting on some, all, or just one of the projects. Plugins are easy to write (in python), though there does not seem to as many as for Hudson.
The bitten front end is lacking (it is hard to manage test results from multiple runs), and trac does not do "projects of projects" well, so we are thinking about plugging it into sonar. The combination of the two could be pretty cool.
精彩评论