Friday, 11 June 2010

CruiseControl.NET: 10 Useful Plugins [Written in C#.NET]

For the past two years I have developed various Continuous Integration systems and along the way, like most things, you collect a lot of information. Recently, I have managed to compile most of this into this solution and kept it up to date.

For the build process of our Continuous Integration, we can give CruiseControl.NET as much power as we desire. Most developers prefer to keep logic in Nant/MSBuild scripts, while some find themselves using CCNET plugins to manage a lot of the work.

In this solution attached, I have included all of the plugins I have developed and have used within some of my processes (I say some because the other use build scripts to perform similar actions). I have updated the solution to work with CCNET v1.5 [1.5.6804.1 to be specific].

If you don't have this particular version, you can either upgrade to it, or easier, copy the required files into the 'References' folder and recompile the plugins. The files required are:

- ThoughtWorks.CruiseControl.Core.dll
- NetReflector.dll
- Wix.dll

These can all be found in the 'server' directory of your CCNET setup. Remember, with plugins, the file names are specific (NOTE: all must start with ccnet and end within plugin.dll). This has already been done.

Included in the ZIP file are the following plugins:

- Banty.AssemblyInfoUpdater - Updates assemblyinfo files with a CCNET build version number.
- Banty.CustomVersioner - Enables a custom versioner (labeller) with wildcard support.
- Banty.MSILister - Lists and produced a packing file to display the contents of an MSI file as XML.
- Banty.TestHarness - Used to test the plugins locally
- Banty.VersionMSIFile - Injects a CCNET version into an MSI file
- Banty.VersionWixFile - Injects a CCNET version into a Wix Setup project
- Banty.VSSCommentCollector - Collects VSS comments for the build.
- CCNet.Sequential.PlugIn+Unittests (External project updated to latest version)
- MsBuildToCCNet (External project by rodymeister)