Recommendations regarding Continuous Integration systems
We are currently evaluating different applications that interface with Visual Studio 2008 (C#) and Subversion to do automated builds of our core libraries. We are hoping to have nightly builds performed and either email the list of changes made to each developer or have the latest versions be pushed to each workstation. What has been your experience with these tools and what are some recommendations?
Cruise Control.net (ccnet) does everything you are looking for. Its pretty easy to use, just make sure if you are going to run it as a service, you give it an account and don't make it run as network service, that way you can give it rights on intranet boxes and have it do xcopy deploys.
It has all kinds of email modes, on failure, on all, on fix after failure, and many many more.
Hudson is the easiest continuous-integration / daily-build tool I've seen. Not sure if it meets all your requirements.
Read more… Read less…
At my last employer I set up a buildserver with cc.net. Expect at least one or two days work to set it up. I used cc.net together with nant and msbuild. These projects have a lot of overlap in functionality so it might be a good idea to think about how you want to set everything up.
The setup I eventually settled with was cc.net on the server to retrieve the project from subversion and fire off the nant scripts. nant was used to call msbuild to build the visual studio .sln files and do all the other build steps like running tests etc.
I had a quick look at teamcity too. On first sight it looks a lot better than cc.net but I didn't have time to try it out yet. It's certainly worth checking out.
A couple of tidbits about working with cc.net and msbuild. If you are building C/C+= projects, msbuild is, um, unreliable at least with VS 2005 (and perhaps earlier). I have not tested with VS 2008. We found that sometimes msbuild would work properly, sometimes not. In trying to solve the problem, we found vcbuild.exe which seems to work well in place of msbuild when building C/C++ solutions.