Continuous Integration (CI) is a development practice where developers integrate code into a shared repository frequently. While automated testing is not strictly part of CI it is typically implied.
Example: Suppose there is a dev branch where all the features get merged before they are moved to master(production branch), then integrating code into this dev branch frequently is continuous integration.
- catch issues early
- prevent “integration hell”
Continuous Integration doesn’t get rid of bugs, but it does make them dramatically easier to find and remove. - Martin Fowler
Continuous delivery is the practice of delivery of code to an environment, whether it is a QA team or customers, so they can review it. After the changes get approved, they can land in production.
Continuous deployment is closely related to Continuous Integration and refers to keeping your application deployable at any point or even automatically releasing to a test or production environment if the latest version passes all automated tests.
Continuous Delivery vs Continuous Deployment