Saturday, December 8, 2007

A real Continuous build server

Last week I was in a Microsoft seminar about all the new stuff in VisualStudio 2008. Something new in VSTS is Team Build 2008, the continuous build server from Microsoft. Since, I haven't found much of it in the web, I'll wait to meet someone who really uses it. Meanwhile at work, we use, its an excellent, full customizable build server, and it is Open Source. It's really cool. So, as a way to to contribute to the community, let me show you our build server implementation:

Here, you can see the web dashboard. On a single page anyone can know the state of our code base (right now, we got 500.000 lines of .Net code (not taking automated tests into account).

Every time a developer delivers some code to SourceSafe (yes, believe it or not, we still use VSS), CruiseControl compiles the project's code and runs all of our automated tests. If the code compiles and all tests pass, the build is shown in green (success!), otherwise, its a failed (red) build. Then, you can check the build's detail page. CruiseControl stores all the builds history and details. Here's how the build detail page looks like:

We use a full open source approach for enforcing our TDD and CI in .NET:
- NUnit: Unit testing
- Rhino Mocks: Object mocking framework for .Net. IMO, it's better than NMock2.
- NCover: Reports the code coverage of our unit and integration tests.
- SourceMonitor: Gives us code metrics. For example, # of lines of code and method complexity.
- CruiseControl.Net: Our build server.
- Nant: Scripts that CruiseControl executes on each build.

So as you can see, you can use open source tools to leverage a continuous integration strategy. I'll be glad to know if you got questions or comments!


Ariel said...

That's nice!, i didn't know it was possible to integrate opensource with MSFT with such an agility!! I've seen some examples out there, but it seems this is a great server. I suppose it supports PHP... doesn't it?
And by the way, nice blog! ;)

Oscar Centeno said...

Hi Ariel.
CruiseControl.NET is the continuous integration server for .net. The original version of CruiseControl works on Java. Ruby and other languages also have CI frameworks. I recommend you to google for such frameworks for your language.