Continuous integration software development best practice

Continuous integration is a key to a quality build process for any multi-developer software development project. I can't say it much better than the way Martin Fowler describes it, so I'll just include a portion of his summary here:

Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day.

Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.

Continuous integration helps teams find integration problems earlier in the development process, thereby making it easier for them to fix the problems.

Continuous integration tools

There are a lot of ways to continuously integrate your code. A few years ago we used simple shell scripts to check code out of CVS or SVN repositories and then perform the Ant-based builds, looking for errors along the way. Several tools are also available to developers. CruiseControl is one such tool, and is described like this:

CruiseControl is a framework for a continuous build process. It includes, but is not limited to, plugins for email notification, Ant, and various source control tools. A web interface is provided to view the details of the current and previous builds.

(Additional information is available here on Wikipedia.)

Books

There are quite a few good books on the subject of continuous integration. Here are links to three of them:

  1. Continuous Integration: Improving Software Quality and Reducing Risk
  2. Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers)
  3. Pragmatic Project Automation: How to Build, Deploy, and Monitor Java Apps

Summary

In short, if you're working on a multi-programmer project, and you're looking to get reliable builds, and find errors in your build process as soon as possible, continuous integration is a software development best practice.