What is "continuous integration" or "continual integration"?
Continuous integration (or continual integration) is the convergence of code from two or more developers via an automated process. We arrived at this definition from summarizing and extrapolating from the following three quotes:
- "Continuous Integration is merging all code from all developers to one central branch of the repo many times a day trying to avoid conflicts in the code in the future." (This was taken from Stackify.com.)
- "Continuous Integration (CI) is a development practice from Extreme Programming that requires developers to integrate code into a mainline as often as possible, at least once a day, and each check-in is then verified by an automated build that compiles the code and runs the suite of automated tests against it, allowing teams to detect problems early." (This was taken from Medium.com.)
- "Continuous Integration (CI): automated build and execution of at least unit tests to prove integration of new code with existing code, but preferably integration tests (end-to-end)." (This was taken from StackOverflow.com.)
While we prefer the term "continual integration" (see the home page for more on this), we acknowledge a highly-voted-up answer on StackOverflow.com says this: "Continuous Integration is a strategy for how a developer can integrate code to the mainline continuously - as opposed to frequently." We think the term "continually" would be appropriate. We fail to see how code could be integrated on a "continuous" and not a "frequent" basis. But given the newness of technology and the related terms, we appreciate that there are more than one valid interpretations of continuous/continual integration.