View Article        

Current Articles | Categories | Search | Syndication

Page: 1 of 5
Previous Page | Next Page
posted @ Sunday, February 24, 2008 4:56 PM by SkySigal

What is Continuous Integration?

Read this to get up to speed first. You won't regret it.

What is CruiseControl.NET?

Although Continuous Integration is a practice that requires no particular tooling to deploy, we've found that it is useful to use a Continuous Integration server... CruiseControl.NET is such a server.

What CC.NET can do for you

Installing and configuring CruiseControl.NET (CC.NET, or CC) is like hiring and installing a pleasant assistant down the hall that knows nothing about what you do, but if you give him or her specific tasks to do, will execute them faithfully, in sequence, to the letter, every time, on every assembly you check-in to your code repository, and post up on the billboard which tasks succeeded, and which failed, so that you quickly fix them.

In other words, Improving Software Quality and Reduce the Risk of releasing buggy software or harming software already released.

Watch for breaking changes in common assemblies
At the most basic level, you want an assistant that will keep an eye on your svn repositories, so that if anybody checks in changes to a common assembly, it will check out all other assemblies that have a dependency on it, and recompile them to ensure that they still all work, and that the latest changes weren't breaking changes.

Run any NUnit Tests on your assemblies
You are all writing unit tests these days? Great! Did you actually remember to run them before checking in the assembly? If not, no problem: you can assign to CC.NET to always run them on your just compiled assemblies (both the latest assembly you just checked in, and all the assemblies that have dependencies on it) and post the results.

Run metrics on your assemblies
Not only can you run tests on you assembly to check its logic, but you can collect metrics on it to see how well it performs.

Check that your assemblies meet specified coding standards
You're assembly compiled? Passed Tests? Runs ok? Great! But how cleanly did you write it?
You can have CC.NET check it against FxCop rules to tell you whether you should rename public properties, and methods to comply with industry standards.

Compile your assemblies' documentation
These days, with a free GhostDoc plug-in for Visual Studio , nobody has an excuse to write code without documenting it somehow. CC.NET can be instructed to pull these xml comments out, and -- using Sandcastle (the MS replacement to NDoc) -- compile them into help files, and post them on your website.

Zip up and post your changes to a website
Finally, if the assembly was able to be compiled, passed its tests, and the documentation was compiled, you can request that all the parts are zipped up and posted to your website for others to download. You can even ensure that the above is done nightly so that end users can always download a new zip containing an assembly that is guaranteed to work (passed its tests).

All the above, and a lot more!
The above are only some of the Tasks that you can envision delegating to your friendly DTH (Down The Hall) assistant -- but you can design any other number of tasks to be achieved.

 

What is the Cost of using CruiseControl.NET?

All the essential parts that you will need to get up and running are free. The only real cost is that all these Tasks -- especially compiling documentation -- can take a big bite out of any CPU, so you may want to think about using a cheap but fast box for it. That said, you don't need to start with an expensive box. You can always get to that fork in the road later.

 

This is a (meandering) tutorial on how to get up and running...

This is a tutorial on how to install CC.NET for the first time, from the point of view of someone who knows absolutely nothing about CC.NET tasks and MSBuild tasks (they are not the same btw). Included are errors situations one is likely to see on a first run, and links to documentation, as well as important backup tutorials that are basically essential to understanding how to get CC.NET, MSBuild, NUnit, etc. to work well together.

This does makes the discussion a bit of a meander, and will take time to get through not only this tutorial, but also the other posts -- but I think it makes the discussion a bit more realistic, more 'holistic' if you will, and gives one time to wrap one's head around a whole bunch of new ideas.

And although you'll find some of this hard to implement, i just want to promise you this up front -- its well worth the effort.

powered by metaPost
Page: 1 of 5
Previous Page | Next Page

Comments

By Benjamin @ Tuesday, July 13, 2010 3:37 AM
Great article.
However, with the 1.5 version of CCNET, the rodemeyer logger doesn't work any longer.

Click here to post a comment

             
Copyright 2007 by Sky Sigal