CruiseControl.Net

I’m currently working on two new releases of The Server Framework, the first is a simple release to add support for VS2008 and the second is the next “feature” release. Due to the number of projects and example servers and supported compilers that I test with it can take some time to finalise a release; each example server has to be checked out, built in each build configuration with each supported compiler and then the tests need to be run… Last time I did this I had planned to put aside some time to sort out an automatic build to do it for me, this time I might actually do it…

I’ve been playing with CruiseControl.Net and it works reasonably well and since the source is available I’ve been able to patch up a couple of things that didn’t work quite how I needed… I can see that I’m going to need to write something that writes a config file for me as most of the examples will have similar project definitions and I figure I should manage the duplication in one place… It’s a pity that some nodes can’t logically ‘cascade’ down the XML tree…

So far my project structure has been giving me a few problems but I’ve fixed them by hacking the cruise control code (oh the double edged sword of open source software)… The first issue was that the CVS source countrol provider required that the directory that you wanted to check out into (its working directory) existed. Probably not a problem most of the time but I wanted to run multiple CVS source control providers and have them check out different modules into different directories. Next the file system source code provider would only copy into the main project working directory; likewirse I needed to chain multiple ones of these together and so wanted each one to copy into a directory that I could specify…

Still, I’m getting there. I’m slowly developing a structure that puts minimal strain on the CVS server and allows projects to be built and their tests to be run and that causes dependent projects to only rebuild if their dependencies are changed…