The term Continuous integration emerged in the Extreme Programming community describing the software engineering practice of immediately committing every change, no matter how small, to a revision control system. Other developers should always work with the latest version of the codebase. The authors Martin Fowler and Kent Beck published the term; Fowler's paper[1] appearing at the same time as Kent Beck's White Book. Although these practices existed before, extreme programming practitioners recommend that teams require their developers to continuously integrate. For small projects, developers run all their unit tests, and integrate. Large projects often require a longer build and test cycle, so these projects use Automated Continuous Integration. A server process or daemon monitors the version control system for changes, then automatically runs the build process (e.g. a make script or Ant-style build script) and then runs test scripts (e.g. JUnit or NUnit). In many cases the build script not only compiles binaries but also generates documentation, website pages, statistics and distribution media (such as Windows MSI files or RPM files). Scheduled builds, if done frequently enough, would fall under continuous integration. However, nightly builds are too infrequent to qualify. Continuous integration has many advantages:
- When unit tests fail, or a bug is discovered, developers might revert the codebase back to a bug-free state, without wasting time debugging.
- Integration problems are detected and fixed continuously - no last minute hiatus before release dates;
- Early warning of broken/incompatible code;
- Early warning of conflicting changes;
- Immediate unit testing of all changes;
- Constant availability of a "current" build for testing, demo, or release purposes;
- The immediate impact of checking in incomplete or broken code acts as an incentive to developers to learn to work more incrementally with shorter feedback cycles.
Contents |
Software
|
|
This article or section may contain poor or irrelevant examples. Articles should only contain pertinent examples. Please improve the article or discuss proposed changes on the . You can edit the article to add more encyclopaedic text. See Wikipedia's guide to writing better articles for further suggestions. |
Notable examples of continuous integration software include:
- Atlassian Bamboo — commercial continuous integration server from Atlassian
- BuildBot — a Python/Twisted-based continuous build system
- Build Forge — IBM Rational's adaptive framework to standardize and automate build and release processes
- CABIE — Continuous Automated Build and Integration Environment. Open source, written in Perl, works with CVS, Subversion and Perforce.
- Apache Continuum — a continuous integration server supporting Apache Maven and Apache Ant
- CruiseControl — Java-based framework for a continuous build process
- DamageControl — a continuous integration server for Ruby
- Electric Commander — a continuous integration server by Electric Cloud
- Apache Gump — Apache's continuous integration tool
- Hudson — MIT licensed, written in Java, runs in servlet container, supports CVS, Subversion, Ant, Maven, and shell scripts
- Tinderbox — a Mozilla based product written in Perl
References
- ^ FOWLER, Martin. Continuous Integration.
Further reading
- Duvall, Paul M. (2007). Continuous Integration. Improving Software Quality and Reducing Risk. Addison-Wesley. 0-321-33638-0.
External links
- Continuous Integration Through Agile SCM Agile SCM Blog w/Focus on Continuous Integration
- Continuous integration by Martin Fowler (an introduction)
- Continuous Integration at the Portland Pattern Repository (a collegial discussion)
- Cross platform testing at the Portland Pattern Repository
- Continuous integration Server Feature Matrix (a guide to tools)
- A comparison between Test-Autobuild and other continuous integration servers
- Continuous Integration: The Cornerstone of a Great Shop by Jared Richardson (an introduction)
- Continuous Integration on a Dollar a Day by James Shore (a how-to guide)
- A Recipe for Build Maintainability and Reusability by Jay Flowers
- Automated Continuous Integration by Mike Swanson
- Continuous Integration anti-patterns by Paul Duvall
- Game Test Server


