Welcome to MSDN Blogs Sign in | Join | Help

Survey: Ideal Continuous Integration

One of the things we do here at p&p, in addition to providing guidance, tools, and reference implementations, is try to evolve the processes we use to write software.  Last week, over lunch, the developers here at p&p had an interesting discussion about continuous integration.  We were trying to decide what changes we should make to our CI process, if any. At som point I’ll report back on what we are doing internally, but at this point, I’d like to hear from the rest of the world on what you would do. Before I ask for input though, I want to make sure we are on the same page. Here is how I view CI. A basic CI process, started on every check-in, includes:

  • Get the latest source
  • Build the components
  • Build and running the unit tests
  • Report success or failure of the build and unit test run (If any unit test fail, the build fails)

Experience has shown me the need to inject a few more steps in the process, so it looks more like this:

  • Get the latest source
  • Build the components
  • Build the deployment mechanism (MSIs, usually)
  • Build and running the unit tests
  • Report success or failure of the build and unit test run (If any unit test fail, the build fails)

Then there is my view of an ideal scenario. I have yet to see this implemented in the real world on a full-scale project:

  • Get the latest source
  • Build the components
  • Build the deployment mechanism (MSIs, usually)
  • Build and running the unit tests
  • Deploy to a development environment
  • Run a build verification test suite against the system deployed in the development environment
  • Run a full regression test pass against the deployed system
  • Run a full acceptance test pass against the deployed system
  • Report success or failure of the build, unit test run, deployment, build verification, regression tests, and acceptance tests (If any step in the process fails, or any test fails, the build fails)

 

So, readers, I have a few questions:

  • What do you think about the ideal scenario?
  • How would your ideal scenario work?
  • What do you actually do in your CI process?

 

Published Thursday, May 18, 2006 8:30 AM by mpuleio

Comments

# re: Survey: Ideal Continuous Integration

You are talking ideal?

Then I want some general performance benchmarks run on the Dev environment for the projects/components I am a part of as well.
Thursday, May 18, 2006 12:01 PM by theCoach

# re: Survey: Ideal Continuous Integration

Get the latest source

Build the components

Build and run the unit tests, along with NCover to get a complete coverage report.

FXCop & Simian (and soon Code Complexity) are also done.

Build the deployment mechanism (MSIs, usually)

Package final product to an ISO

Deployment is another process, usually done daily during QA Cycles.  We have setup an automated process to take a machine name which creates and configures a Virtual Machine, mounts the ISO and starts the installer.  This is done on demand; whenever QA wants a fresh build.

We are working with Selenium to work in the final regression bits and pieces now.  That will most likely happend on the Virtual Machine environment, during the QA process.

Thursday, May 18, 2006 1:17 PM by Rob Chartier

# Interesting Finds: May 18, 2006 PM edition

Thursday, May 18, 2006 4:40 PM by Jason Haley

# re: Survey: Ideal Continuous Integration

I'll definitely makes sure code coverage and rule checks (fxcop and whatnot) get added to my ideal list. For code coverage, it would be great to have seperate reports for unit tests and functional tests, possibly with a "combined" report.

I also forgot code signing, which should part of the process as well.

For products shipped via CD, an ISO package sounds great.

Virtual PC and I think Virtual Server are automatable.  theCoach has a good point: it would be possible to create and deploy to a VM, run the tests there, and not worry about seperate hardware for an environment.  This idea has floated around among a few developers I've talked to, but I have yet to see a good sample of someone scripting a VPC deployment (of course, I have not looked that hard).

Great comments.  Keep 'em coming.
Saturday, May 20, 2006 12:38 AM by mpuleio

# Espresso Fueled Agile Development Survey Ideal Continuous Integration | Paid Surveys

Anonymous comments are disabled
 
Page view tracker