As I mentioned in a previous post, a couple former coworkers and I are putting together an application that we are hoping to take commercial. This are going fairly well at this point, but perhaps a bit behind schedule as we are doing it entirely .Net 3.0 so there has been a small learning curve, not to mention the fact that we all still have day jobs. Of course, unlike me, my partners also have significant others to dedicate time to.
Anyways, one of the things I wanted to utilize for this project because of the team work environment and the disjoint schedules was a build server. (Okay, I also wanted to learn about the entire concept and functionality of a build server.) I used CIFactory for our build server which was created by Jay Flowers. CIFactory is basically a set of scripts that configures/installs the components of the build server so that you don’t have to put together all the integration scripts yourself. The package works quite nicely and sets up things link CruiseControl.Net, Simian, NCover, NDepend, and MSTest. I have it integrated with our Subversion repository, but it can also integrate with Visual Source Safe and other repositories. It also can integrate a lot of other tools besides what I have listed here.
At this point we are mainly using the setup to verify that the project is building properly so that someone doesn’t grab the latest code and get stuck with errors that some else has checked in. If a build fails an email goes out notifying everyone of the broken build so that no one gets updates and the person who broke it can get it fixed. (Getting people to respect the build server is a completely different complication and topic.) I want to get more familiar with the other tools, especially the ones that revolve around testing but I just haven’t had the time. I need to put together a list of things to learn to make myself a better developer over the next six months and add testing tools to the top of the list (along with Ruby).
If you want to get going on CIFactory there is an excellent DNRTV episode on it that I followed to get our setup going. I had it all setup in a matter of a few minutes and I really like the setup. Jay is also excellent at responding to any questions quickly and promptly. There is one negative to the setup though that I came across this past week that was a real disappointment for me. CIFactory does not support multiple projects. It creates a separate CruiseControl.Net server for each project and they won’t both run at the same time. It appears from the news group that someone has made some modification and gotten it working so that two projects are going to one CCNET, but the benefit of CIFactory is the fact that it pretty much just works. If I’m going to have to dig into scripts to get multiple projects working then I will probably eventually rebuild the build server without CIFactory.
CIFactory is an excellent starter package for getting up and going with a build server and if Jay gets the time to modify it to handle multiple project easily then it will be an excellent solution for a permanent builder server. My build server path will depend on if Jay gets multiple projects implemented before I get the free time to rebuild the server.