Continuous integration is a team software development and management principle that can be applied to any iterative programming model. It was supposedly developed in the early 60′s when IBM’s team developing OS/360 had to re-build the codebase four times a day. Recently, continuous integration become more popular boosted by the need to build high-quality, high-performance and reliable software quickly.
There are a few principles that characterize best practices of continuous integration such as committing new code frequently (at least once a day), categorizing developer tests, developing and using a steadfast integration build server that gives continuous feedback mechanism and the staging builds.
When using continuous integration, each team member submits adapted and new code at least once per day but normally more frequently leading to multiple integrations each day. Isolated modifications are implemented by automated builds which are immediately tested to detect integration errors as soon as possible. Defective code can be immediately identified and corrected. Since the errors and malfunctions are detected early in the development, process, defects are usually smaller, less complex and easier to resolve than with alternative development methods. This approach leads to a considerable decrease in integration problems during final deployment and enables software teams to develop software solutions very rapidly.
Continuous integration doesn’t require specific tools to deploy code but it was shown to be beneficial to use a continuous integration server such as CruiseControl, Hudson or Jenkins etc.
The build server is a shared system on which the builds and tests of newly committed code are run and analyzed. It needs to ensure that all committed modifications of code are integrated into the code base. Continuous integration servers need to be reliable and provide evaluation features that include version-control system integration for code changes, build-tool integration of new committed code, feedback and reporting of successful and malfunctioning integration, labeling of code, estimate of project dependencies and ease of accessibly and use for the specific use. If any build or test fails, the continuous integration server needs to send out notifications addressing the problem allowing immediate response and repair/resolution.
In summary, continuous integration provides rapid feedback on code quality to developers. It enables best practice of testing committed code and static analysis to find critical errors as soon as possible. Using an effective continuous integrations practice makes the management of large projects much easier and more efficient.