You may have heard of the Term “CI” or “CD” in software development. It often comes to confusion of the terms or even to wrong interpretation. In this article I would like to clarify what exactly “CD” and “CI” mean and what they differ in.
CD/CI is a method by which software is delivered at regular intervals and the development and related steps are automated. With “CI/CD” there are often three different terms: Continuous Integration, Continuous Delivery and Continuous Deployment.
This means that developers who ship software automatically create a delivery bundle which is automatically tested by different instances. A typical example would be, if a developer checks in his part of the software into the version control and afterwards a so called build is created which is validated by tests. This ensures that software that has been developed is tested or tested directly after it has been built. If the automatic check detects conflicts between current and new code, these can be resolved faster and more frequently with the help of CI.
After the automation of builds and unit or integration tests at CI, Continuous Delivery also automatically releases the validated code to a repository. To ensure an effective continuous delivery process, the CI must already be integrated into your development pipeline. The goal of Continuous Delivery is a code base that is always ready for implementation in a production environment.
With continuous delivery, each phase – from the merging of code changes to the delivery of production-ready builds – includes automated testing and code approvals. At the end of this process, it is much easier to implement an app during the production phase
And now the Magic Part
What? You might get confused? We have two terms that fit into CD? Don’t worry it’s simple.
The last Term of the CI/CD pipeline is continuous deployment. As an extension of Continuous Delivery, where production-ready builds are automatically released to a code repository, Continuous Deployment also automates the release of an app into the production phase. Since the production phase in the pipeline is not preceded by a manual gate, the automated tests must always be very well thought out during continuous deployment.
In practice, continuous deployment means that a developer’s app changes can go live within minutes of being created (provided they pass the automatic test). This greatly facilitates continuous integration of user feedback. All these related CI/CD practices make an application implementation less risky because changes are released in parts and not all at once. However, the upfront investment is significant, as automatic tests must be written to the CI/CD pipeline for the various testing and release phases.