Derik Whittaker



What I expect my Continuous Integration server to do for me.

Recently I had a post where I made the statement ‘To CI or not to CI, did not realize it was still even a question?’.  The intent of the post was to assert that I did not realize that having some sort of CI (Continuous Integration)/Build Server was not considered the norm for a development shop.  I that post I stated that your CI setup could be as simple as a cron job running a script or be a full fledge product such as Team City, Hudson or CC.Net.

Since I went out and did a rant about how there was no excuse for a team to NOT have a build server I thought I would put together a post on the various things I would expect to see from a CI server.  Now I am NOT saying that if your CI setup does not do all these things you are doing the right thing.  What I am saying is that the list below (and I am sure I will miss something) are some of the things I expect my CI setup to do for me (in no real particular order).

  • Monitor my source repository and build on changes
  • Run my unit tests
  • Run various static analysis metrics
    • Code Coverage
    • FXCop/Style Cop
    • Any of the metrics from NDepend
  • Publish assemblies for usage (could be to a test server, a file server or ftp server)
  • Build a clean copy of the database from my setup scripts (we have a running list of alters we use to perform upgrades)
  • Be able to commit versioned assemblies back into the repository for other teams to use (if that is something your team needs)
  • Create some sort of visual graphs/trends for tracking
  • Be able to run a build which creates and packages an installer (for deployment)
  • Send notifications (emails/post to discussion boards, twits, etc) when there are issues

Now I know this is an extensive list.  I also know that trying to do all of these things at one time is both daunting and not practical.  But these should be the goal.  What I will say is this, start small and build.  Your goal should be to incorporate these things into your build over time and if htat is your goal you will be amazed what happens.

Happy building

Till next time,

Posted 06-04-2009 8:02 PM by Derik Whittaker
Filed under: ,



Tony wrote re: What I expect my Continuous Integration server to do for me.
on 06-04-2009 11:05 PM

i wish the dev shop I work for did half those things...

Steven Harman wrote re: What I expect my Continuous Integration server to do for me.
on 06-04-2009 11:48 PM

Everything you've listed is extremely valuable, but often a few of the items are overlooked or not considered to be a part of a classic CI build. I believe this to be an example of local optima - many dev shops are focused too much on the dev cycle (which does need to be addressed) and forget about engaging the rest of the delivery process.

I think we need to stop just thinking about CI builds and start thinking more systemically - its really about developing a consistent and automated Deployment Pipeline.

Currently our shop has the following stages (each being a separate, and serial "build" w/in our TeamCity setup):

1) Development

2) Deployment

3) Testing

4) Review

 -> the artifacts from Review can be pushed as public bits

And while the stages could be better named to illustrate what they really do, the point is, at each step along the way we do particular things to get the code closer to a "ready to ship" state. You know what, I'll check w/my boss and if its cool, write up a blog post to explain more about our pipeline and why we believe its important to invest in such an apparatus.

Trevor wrote re: What I expect my Continuous Integration server to do for me.
on 06-05-2009 2:43 PM

This sounds great....would love to be doing even some of this, but where to start!!??  Can you point to any online step by step guides??

btw...running SourceGear vault as our SC provider.

Rinat Abdullin wrote re: What I expect my Continuous Integration server to do for me.
on 06-06-2009 7:51 AM

Absolutely agree with the list.

In fact, that's what so far I've been having in my projects. That's the only way to be able to deal with complex development projects anyway.

Just a few "must have" items to add to your list:

* Generating documentation based on the code and updating section of web site to the latest

* updating (if forced) auto-update package deployment (so that customers will get their smart clients updated automatically, when they launch application

* Running code quality tests against the codebase (enforcing project-specific design patterns and guidelines)

* Grabbing and publishing performance statistics of some long-running method operations (i.e.: especially long-running DB queries)

Here are some more concepts (nice-to-have):

on 06-08-2009 10:47 AM

VS2010 and .NET Framework 4 In-Process Side by Side Part 2 - Common in-proc SxS scenarios Achieving Speedups with Small Parallel Loop Boodies Visual Studio 2010 Performance Part 2: Text Editor A scalable reader/writer scheme with optimistic retry Deploying

John Dhom wrote re: What I expect my Continuous Integration server to do for me.
on 07-24-2009 9:32 AM

I agree with the exception of the list being "extensive" <grin>. I consider scripted deployment as a mandatory component of the process.

Without scripted deployment you can't realize the value of the CI artifacts. Scripted deployment identifies platform specific configuration values, allows all team members to frequently deploy and do integration testing, provides repeatability for QA/Operations deployments, provides the basis for automated deployment

Nightly scheduled build that applies database changes to a copy of the production database (or schema) is also an excellent confidence building exercise.


About The CodeBetter.Com Blog Network
CodeBetter.Com FAQ

Our Mission

Advertisers should contact Brendan

Google Reader or Homepage Latest Items
Add to My Yahoo!
Subscribe with Bloglines
Subscribe in NewsGator Online
Subscribe with myFeedster
Add to My AOL
Furl Latest Items
Subscribe in Rojo

Member Projects
DimeCasts.Net - Derik Whittaker

Friends of
Red-Gate Tools For SQL and .NET


SmartInspect .NET Logging
NGEDIT: ViEmu and Codekana
NHibernate Profiler
Balsamiq Mockups
JetBrains - ReSharper
Web Sequence Diagrams
Ducksboard<-- NEW Friend!


Site Copyright © 2007 CodeBetter.Com
Content Copyright Individual Bloggers


Community Server (Commercial Edition)