Continuous integration
Continuous Integration is a Software Engineering term describing a process that completely rebuilds and tests an application frequently. Generally it takes the form of a server process or Daemon that monitors a file system or Source Code Control SCC (using systems such as CVS) system for changes and 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, statistics and distribution media (such as Windows MSI files or RPM files.
Continuous integration is frequently associated with Extreme Programming and other Agile practices, but can be, and has been, adopted by more conventional methodologies too. The main advantages of such an approach are:
- Immediate warning of broken/incompatible code;
- Immediate unit testing of all changes;
- Constant availability of a "current" build.
The main disadvantages are:
- The overheads of maintenance
- The immediate impact of checking in incomplete or broken code acts disintentive to developers to provide frequent (backup) check-ins.