I have used all three for several years. Some of the answers below say that most of the work will be to create your own build scripts. This was true in my experience. We use a combination of MSBuild and Powershell scripts for our build process, which can be run under almost any CI tool, so choosing one of them comes down to what you are looking for in terms of configuration, integration with other systems, performance and ease of use.
Short answer:
I recommend Jenkins. So far, this is the best combination of these qualities. It has a ton of plugins, some localization and is actively developed by the OSS community.
Long answer:
- I started with Cruise Control.Net. It was easy to configure with a text file, and I found it very reliable. However, we moved away from him because Thoughtworks was moving toward paid products (Cruise, now Go), and future development was in question. Since then, the new team forged the project, but since then little is known about the future development.
- We switched to TeamCity, which is free and has an excellent ajax-y user interface. It is easy to set up and get started, as well as many features for distributed assemblies. We stop using TeamCity for several reasons. The server does a ton of things, and it was a bit redundant for our basic needs. However, this was not very customizable (see "Time Zones" and "Notification"), and we often found that the administration user interface was confusing. Everything was in order, but our performance problems were also steadily worsening. We started with the standard release of HSSQLDB, moved our installation to the SQL server when we started to experience degraded performance, and then we had to completely abandon the use of the server because performance continued to deteriorate over time. I'm not sure I was the culprit, but I could not find any cleanup for this, which would explain the constantly deteriorating performance, as the Tomcat web server fought against SQL Server for resources, even if there were no active moves. I am sure that this is my fault and I didn’t have enough of some important settings or to direct the server more memory, but this is a common service box, we did not have these problems with CC.Net, and most importantly, I not Java / Tomcat, and they don’t have too much time to deal with these problems.
- We have now moved to Jenkins. Everything seems to be working fine now, but we were not with him for long. It was easy to set up, it seems there aren’t as many resources as TeamCity, and it has a ridiculous amount of plugins. The only drawback so far is similar to many OSS products, it does not seem to have the best documentation, and it does so much that I can tweak the handles a bit to tweak it the way we want.
source share