What is Continuous Integration (CI) and Continuous Delivery (CD)?

  1. Continuous Integration (CI): This practice encourages developers to integrate their code changes into a main branch of a shared repository frequently, preferably several times a day. Each integration is then verified by an automated build and automated tests to detect integration errors as quickly as possible. This approach aims to minimize the pain of integration challenges by making them a routine part of daily work, which in turn reduces the long-term complexity of bugs and merge conflicts.
  2. Continuous Delivery (CD): Building upon CI, continuous delivery ensures that the software checked in on the main branch is always in a state that can be deployed to users. CD automates the delivery of applications to selected infrastructure environments. Most teams work with multiple environments other than production, such as development and testing environments, and CD ensures there is an automated way to push code changes to them.

Combined, CI/CD represents a culture, set of operating principles, and collection of practices that enable application development teams to deliver code changes more frequently and reliably. This process is also known as the CI/CD pipeline and is supported by development, operations, and quality assurance teams working in tandem. The ultimate goal is to make software development and delivery more efficient, faster, and more robust.