Fowler discusses the necessary steps towards continuous integration as well as the benefits it may introduce. He defines continuous integration to subsume the following practices:
Single repository: a single repository with a master branch holding all files required for building.
Automated build: the build should be automated such that only one command is sufficient to start a build.
Self-testing build: the build should include automated tests to verify the correctness of the build.
Frequent commits: every developer should commit at least daily; more frequently commits are preferred and make error detection and correction easier.
Integration machine: a commit is finished only after successfully building and testing on an integration machine, which may be a continuous integration server and should resemble the future working environment of the application.
Broken builds: fixing a broken build should have priority for all involved developers; usually, tools help to monitor all builds running on a continuous integrations erver.
Fast build: for the above principles to work (comfortably and efficiently), it is crucial to maintain a fast build - Fowler's rule of thumb is ten minutes.
Following the above principles will have two major benefits:
The problem of deferred integration - the the corresponding risks - is eliminated.
Bugs are easier to track and fix as, at any point in time, it is clear which components work and which do not work.