Agile in small steps #4: Continuous Integration

Posted on May 5th, 2007 in Agile, Agile in small steps by siddharta || 1 Comment

This post is part of the Agile in small steps series. For a complete list of posts in this series, click here.

I’m sure you’ve been in some projects where integration happens in one big bang at the end of the project — and that’s when everyone discovers that the components don’t work together.

The idea with continuous integration is to learn about potential problems earlier in development, and what better way to catch integration problems than to integrate frequently and look out for errors?

Continuous integration is the culmination of the three steps we saw previously — Unit testing, Version control and One step release build. With continuous integration, you integrate all the components of your product as frequently as possible. In some cases this might be once a day. In other cases this might be once an hour.

Here is how it works: A script or tool checks out the workspace once an hour, runs the one step release build script, then verifies everything by running automated tests. Naturally version control, one step builds and unit testing are prerequisites.

Smarter scripts and tools can perform an integration after every checkin, at a prescribed schedule, and a whole lot more, but those are extras. As long as a build and test of the code in the repository happens at a regular interval, its continuous integration.

Continuous integration can also be done manually. How? After every checkin, a developer goes to the build machine, checks out the latest code, runs the build script and runs the tests. Thats continuous integration too, only a bit more painful.

The good news is that there are a whole bunch of continuous integration tools, some with a bunch of extra features and integration with various tools. Most of them save the built artifacts so that you can always get hold of a working copy of the binary at any particular time. Some have web interfaces which show you the past builds and their status, plus metrics and so on. Like I said before, these are all just extras. Useful extras, but extras nonetheless.

The main purpose of continuous integration is to build often and find problems early. Just as how unit tests provide rapid feedback at the code level, continuous integration provides rapid feedback at the integration level.

Further Reading

  1. Martin Fowler on Continuous Integration
  2. A comparision of continuous integration tools

Doing Distributed Agile?

Share and collaborate with distributed teams with our electronic agile board tools. Get all the benefits of electronic tools without sacrificing the benefits of physical boards. Supports Scrum taskboards, Kanban boards and user story maps. Check it out!

One Response to “Agile in small steps #4: Continuous Integration”

  1. Michel Haaf Says:

    Deference to op , some superb selective information .

Leave a Reply