I am in the process of researching/setting up a Continuous Integration Server for a major project and am in the need of either recommendations or criticism.
The Need
CI is just the next step in our path. It's been mandated at the right time, as a major project is in the pipeline.
The Limitations
- Needs to be able to live on the same server as our SCM system (SVN)
- The Server is (unfortunately) an XP Pro Machine.
- Needs to handle .NET builds.
- Would like to have some profiling capability. Or the ability to add at a later date.
- Budget, free preferred.
- While we're more than capable, configuration would be preferred to be easy.
- Our SVN web front end is using apache. Would like the CI's front end to do the same, but can deal with IIS otherwise.
- Building with NAnt
What I've Narrowed it down to thus far
I am currently looking at 4 options:
- Cruise
- CruiseControl.NET
- TeamCity - Currently testing, seems to be good so far, the free pro edition has more than enough agents for our project.
- Hudson
What's my real question
In your experience with any or all of the above, what are any criticisms or neat things you have seen. Any things to watch out for, or pay attention to during setup? If you had to do it all over again, would you choose the same thing?
Have you seen/considered Hudson ?
https://hudson.dev.java.net/
If you're building your .NET project with NAnt for example, it has a plugin that may allow it to serve your needs.
It integrates with most SCM systems, bug trackers, etc. and is extremely extensible.
In my experience, Hudson has been superior to Cruise* on most fronts. Anytime I've needed to connect it to something else, someone has already created a plugin.
It's easy to configure, has plugins for most aspects of current software engineering practices. It includes Winstone and can run completely standalone, or within any Java App/Servlet container. I've had zero issues running it in Tomcat and Glassfish for example.
Here's the list of its current plugins
http://wiki.hudson-ci.org/display/HUDSON/Plugins
It seems to meet your goals
no problem
I have not personally had any issues running the standalone variant on Win XP, haven't tried it on other servers/containers on XP though.
Assuming NAnt meets your needs or you're already using it, should be good to go here in short order
If existing plugins can't accommodate your needs, plugin framework is excellent and you could roll your own.
Free and actively developed/maintained
Config is quick and easy.
This may be a sticking point, but if the included Winstone won't work, it needs an App/Servlet container.
I've converted a few projects to Hudson which were using CruiseControl, and haven't looked back. I also push it for new projects whenever possible.
Regards
You might want to look at CI Factory. It satisfies all your requirements. CI Factory uses CruiseControl.Net, and it comes with Nant plugs for building, svn, FXCop, Nunit and others. I use it for all my projects. DNR.tv has and excellent walk through of setting up a server: screen cast.