Continuous Integration in a nutshell
May 31, 2007
Last week Matías and I were working on automating the builds of our projects. We didn’t want just to automated the building process, we also wanted to implement Continuous Integration. Throughout this post, I’ll share the experience we’ve had since we started.
Which product to use?
We started with Microsoft Visual Studio Team Foundation Server, since it’s our configuration management platform. We did research over the build services that come out-of-the-box and a little bit of spiking extending those services using the API.
Our first spike consisted in creating a WebService that subscribes to TFS Check-In Event. We didn’t have so much luck with this, since for each project you’ve to configure a bunch of things, handling those build projects is not straightforward. We were a little bit dissapointed, we wanted to take advantage of TFS integration on Visual Studio 2005.
We kept moving over the internet til we found CC.net, this is an open-source product created by Thoughtworks, it’s an extensible automation platform were you can configure multiple things as FxCop, NUnit, NCover, among others. Also it integrates with mutiple source control providers. So we decided to give it a chance.
Trying Cruise Control.net
As an old-fashioned geek, I’ll never download a source control project in MSI project and let another geek decide where and how should I install their products. We downloaded the binary-zipped version of Cruise Control.net. We unzipped the package and started to see what’s in there. Inside the zip file we found:
- Documentation, each released (not-live) version of CC.net includes all the documentation to be used locally.
- Server, is the server application. This application whose responsibilities are: listen SCC for changes, create a local workspace on the build machine, and perform the configured tasks (run FxCop, run NUnit tests, etc.). It cames in two formats, Windows Service and Console application.
- CCTray, this is the client application for developers to check 24*7 the build health, is the desktop way to monitor your projects.
- WebDashboard, is the web application where you can force builds, get an overall project portfolio health status, and review log files.
Now that we knew what’s in there, we started to configure CC.NET (on Longhorn Server Beta 3).
Configuring Cruise Control.net
First of all we needed a box where we can deploy it. We created a VPC with the following characteristics:
- Windows Longhorn Server B3 (minimun installation, with IIS7 and Powershell features).
- 1GB of RAM
- Hosted on Virtual Server Enterprise R2
Once we had the box, we started with the CC.NET service configuration. We read this guide, for step-by-step installation, we choosed VSTS plug-in for monitoring source control, and MSBuild as the build task.
We started with just a single project, a common .net 2.0 project, it built succesfuly. So CI was running, so we said : "Ok, next step let’s monitor this". First we went for the webdashboard, deploying it on the IIS7 as it’s explained on this page. (Note for II7 users: You should change the AppPool to be .Net Classic cause the WebDashboard comes with kind-of rewritting http module, not supported by default on IIS7 configuration).
We navegated to webpage http://localhost/webdashboard, and voila! it was there. Then we decided to go for CCTray since we thought : "Cool, I’ve got this configured but now howwe let the devs know when they brake the build". So we took a look to the CCTray application that comes out-of-the-box and it just was a plug-and-play thing, we configured it to use the WebDashboard connection mode pointed to the http://buildServer/webdashboard/ and showed up the project we had previously configured.
Up to this point we were really enthusiastic about how things were going, we went for more configuring the whole portfolio on the build server, but suddenly popped up a problem not all projects have same target platforms, same involved technologies, and we wanted each project to built just with it minimum requiriments so we avoid things like incompatibillity of technologies and we ensured (more at this point) the quality of our deliverables.
Creating the scalable and extensible Build Services model
We started the design of this infrastructe based on the following premises:
- We wanted a single dashboard for the whole project portfolio
- We wanted a single source for CCTray
- We wanted to scale out adding for e.g. 3 more types of build servers or reducing the number of them with out pain, and with no need of configuring everything again.
- We wanted mutiple build machines with different platforms and software inside them.
Researching, we found that on the dashboard.config you can tell your dashboard where are your build machines, and contact them via remoting, and also we discovered that you can have more than one application (build server) configured for your dashboard. How to modify the dashboard.config can be found here, on the CC.net documentation.
Finally in the following diagram we’re showing how was the initial CC.NET Deployment Strategy (single server) and the design we came up with.
Default Deployment

Final Deployement

thanks,
~johnny
johnny @ Home
May 30, 2007
Finally I’m at home, the trip was amazing. Such kind of experiences are the ones that you’ll remember for your life time. I really enjoyed my time there at Santiago del Estero.
Today, I’m getting to back to office to keep working on Building Automation so stay tuned on this same channel cause a post about it is comming soon….
thanks a lot,
~johnny
johnny @ Santiago del Estero (2nd Day)
May 29, 2007
Today was our second day at Santiago del Estero, where we're doing a couple of conferences about latest technologies DinnerNow.net , Windows Server 2008 (formerly code-named “Windows Longohorn Server”) and Windows Vista.
My conference was about DinnerNow.net, the sample application I've been working on last months. Ale Ponicke showed Windows Vista and a couple of cool technologies (Photosynth, Windows Live Maps).
Also I'd chance to see other local User Groups that are starting up on development topics. I'd a great time with this guys, when I'm back in the future I'm sure I'll see results and great things from them when I'm back again.
The conference was great, was the last one of this tour at Santiago del Estero. Again I want to say thank you!, to everyboday who made this trip possible. Starting with the GENTI & .netSgo user groups and their teachers (Mario and Aldo).
This has been cool, now it's time to head back, going home will be great. Before going back I'll have lunch with people of UCSE (Catholic University of Santiago del Estero) at Rio Hondo.
Then we will be travelling to Tucumán where Alejandro and I will be taking the airplane to Buenos Aires.
This has been another amazing experience, we came here to teach about technology but we learnt lot of things about the people here and their lifes. So personally I'm really happy with this kind of experiences.
see you on the next post,
~johnny
johnny @ Santiago del Estero
May 28, 2007
Hi I’m currently at Santiago del Estero, an argentinean province were Ale Ponicke and I will be doing a couple of conferences about Windows Server 2008 (formerly code-named “Longhorn Server”), Windows Vista and Office 2007. I’ll be presenting the DinnerNow.net sample application.

I arrived yesterday’s afternoon, Mario picked me up at the airport, and we had lunch at his house with his family. It was great. Then after lunch I checked-in in my hotel, and then played a soccer match with the local user groups members. We had too much fun.
Today’s morning, I presented DinnerNow.net in the UNSE (Santiago del Estero, National, University). It was great, then Ale Ponicke showed Windows Server 2008, and also the hot new code-name “viridian” to be released after Windows 2008.
Once again, this University treated us really great, we appreciate effort while where’re here, and also this time I had the chance to see the user groups I’ve been mentoring since last year.
Also I’m catching up with potencial user groups, one of the things that I really like is the passion invested by this guys, and I’m having the challenge of mentoring an UG completly formed by girls!
Tomorrow morning I’ll be presenting DinnerNow at UCSE (Catholic University of Santiago del Estero).
See you in the next post,
~johnny
WCF Objective Domain Sessions
May 23, 2007
As Matías posted on his blog, we were working on the Objective Domain Sessions for the 70-503 examn (Technical Specialist - WCF 3.5). The activity was held by the Microsoft Learning Team leaded by Howard Dierking. He explained us the refactoring of the Examination Stack, which IMHO it’s more reallistic rather than old-fashioned MCAD.net and those things.
How does it feel?
It felt great, was another kind of experience, was not developing, was not doing architecture, was not giving a conference, was something completly different from any experience I had in the past. It was a brainstorming about which are the right things to test candidates on WCF, was hiring oriented, each desicion was made thinking on the profile and the posibilities that this examn could bring to the candidate.
First, I’ll keep saying thanks to our team, the Southworks Team, who took as to be SMEs on WCF. Yes, that’s my first feeling, I feel that I’m on the right bus, that wasn’t me who was there, was the team. The team spoke thru us, but the knowledge and the experience using WCF was shared with them, so If Matías or Johny weren’t there probably another southy would take that position and the quality would be the same.
Second, I’m proud to be part of chaning things that I didn’t like from the past. A couple of years ago I was taking the courses of MCAD.net (Fwk v1.1) and I realized that the piece of paper that says MCAD.NET didn’t say what I really was. So now MS Learning is chaging the way that they develop the examns from scratch. The have choosen SMEs (Subject Matters Experts from the field) to say what should be in there. Cause we, the people on the field, will be the consumers of the resources made by them (MS Learning). So it’s a nice a approach to ask the buyer what he is going to buy.
Third, nothing except thanks to Microsoft Learning people, they were excellent hosters and also they conducted us thru the whole process to make it painless (since we’re not accostumed to do things like this).
Ok, that’s it from my side, I spent a week at Redmond, now back at home.
I’ll be wating to see how does the examn looks like…
thanks,
~johnny
DinnerNow Conference @ Feria del Libro
May 2, 2007
The last two weeks Mike and I were presenting at “La Feria del Libro” one of the DinnerNow labs as a workshop for Teachers and IT People that assisted to the event.
About the event
Feria del Libro (Book fair) is the most popular intellectual event in Argentina. It lasts almost 4 weeks and 1.200.000 attendees through the event. The central thing is the book, but a huge other things happen around it, the most important for us is education. We had a stand of 200 m2 there, with a lab with 40 PC with latest technology.
The experience
It was really cool, was my first time in an event like this with different types of attendees on the same track. It's a massive event, and people were really interested in it. We held the conference with more than 120 attendees for both tracks. I wish we had more PC so more people could get involved but space was limited by our 200m2 of stand.
The material
For the attendees, the material will be posted on Mike's blog soon. The main difference between the material that you'll get from us and the official one at www.dinnernow.net is the language. Our presentation was in spanish and we've translated the material but if you feel comfortable with english don't wait get the material from here, otherwise visit Mike's blog for more info.
Memories from the fair







A video
The following video is an extract of the Demo we've made about LINQ. The video: http://www.youtube.com/v/X9mHbRNma2E
thanks,
~johnny





