= Continuous integration
<Continuous integration> is a <software engineering> practice in which collaborators frequently combine small changes into a shared main line, conventionally at least daily, and check each integration through an <automated software build> and <software testing>. Fast feedback makes incompatible assumptions visible while the changes are still small. A server that tests isolated development branches contributes automation; frequent integration into the shared main line is the defining collaboration practice.<Continuous Integration by Martin Fowler>[Definition and sections on mainline integration and automated builds]{ref}
For example, one developer changes a <parser> to return a new <data structure>, while another changes code that consumes the result. Each component can pass its own isolated <unit tests> while their combination fails. <Integration testing> of the shared revision exercises that interface and exposes the mismatch. The build result should identify the tested source revision so that a failure can be reproduced.
Back to article page