The GA release that I have been working towards is so close to shipping that I can now look towards the next big push. One of the benefits of shipping a release is that there is a free up of time that isn’t constant coding. This is the time when you work on those extracurricular task that will make a difference. This is the time I get to work on the automation infrastructure that will remove more of my manual tasks.

I have two projects in the product that are built and unit tested. While this is not the way it should be this is the way it is. There is little benefit with just building the project and running unit tests as an automated process. I could just do that in the development environment and be done with it.

For the last year or so I have gotten VSS replaced by SVN. Unfortunately it was just a replacement and lacked the best practices and policy one should follow in source control of code. The good part of it was that all of the distributed development teams are checking code in. Most of them are not using build scripts or have unit tests. I admit my unit tests are below 50% coverage.

I have place two projects under CI on a build machine running CruiseControl.NET. There are only three tasks that are managed by the CruiseControl.NET configuration. The pulling of the source code from SVN is followed by the NAnt build script and finally the unit tests are run. I can then look at the ccnet dashboard and see if the latest check in compiled and tested successfully.

This type is CI is what I call a ‘commit’ build. Only fast unit tests are run during a ‘commit’ build. The next type of build I refer to as a continuous build. This one runs every few hours and takes all of the code from all of the projects and compiles and tests the application. The idea is to run the ‘commit’ unit tests but also some longer running integration tests. These usually are tests that login in and make sure pages come up in the browser. These are not meant to test every bit of functionality. These are more like smoke tests to discover problems early.

The third build type is the nightly build. This pulls all of the code and builds the entire application. This is also the time that the installer(s) are built. If this completes successfully then the installers are used to deploy the application. Once the application is successfully installed then the whole battery of tests are run.

But right now all I’ve got working is two projects doing a ‘commit’ build. There is a small team of contributors beginning the task extending the rather sparse CI.