M. Fowler. Continuous Integration. 2006.

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.
What is your opinion on this article? Let me know your thoughts on Twitter @davidstutz92 or LinkedIn in/davidstutz92.