Continuous integration is a software development approach where developers regularly merge or integrate code changes into a central repository. Automated builds and tests are then run from the shared repository, immediately surfacing any functional or integration errors. In the past, developers often worked in isolation for extended periods, merging code changes only after their work was completed. Merging long-accumulated code changes was difficult, time-consuming and laden with bugs. With continuous integration, developers frequently merge changes to a shared repository using a version control system. Every revision committed to the repository triggers an automated build and test.
Continuous integration usually refers to the build and unit testing stages of the DevOps software process. The goals of continuous integration are to find and address errors quickly, improve software quality, and accelerate the validation and release of new software updates. This iterative building and testing process overcomes many problems that formerly occurred between the planning, design and implementation stages in the software development lifecycle. Regular merging of various team member’s code prevents software projects from drifting too far from a functional state. As new code is added by others, catastrophic merge conflicts can be avoided. With continuous integration, when developers check in bad code the system automatically notifies the entire team within minutes. This prevents new versions from accidentally building upon or relying on bad code.
Continuous integration ensures bugs are caught early in the development cycle, which makes them less expensive to fix. It also reduces the time to market for new applications and helps businesses respond quickly to changing customer needs. Open source technologies and development tools can support continuous integration and the DevOps model with automation and lifecycle management products. For example, SUSE OpenStack Cloud and SUSE Manager include automated deployment and configuration tools for software development projects.