What Does Continuous Delivery (CD) Mean?
Continuous delivery (CD) is a software development practice that automates quality assurance (QA) testing in order to facilitate frequent code releases to a staging server.
A continuous delivery approach requires the production and test environments to be similar. Once new code is committed, it triggers an automated work flow that builds, tests and stages the update.
With continuous delivery, the developer makes the final decision about whether the code is stable enough to move into a live production environment, and the operations team is responsible for moving approved code from stage to a production server.
Techopedia Explains Continuous Delivery (CD)
The most important thing to understand about the role continuous delivery plays in DevOps is that "delivery" does not mean "pushed into production."
When a developer says that code is ready for delivery, it simply means that the code has been written, peer reviewed, merged and successfully passed software QA tests before the new source code version was tagged in the development team's configuration management tool.
What is CI/CD?
Continuous delivery is often mentioned in tandem with continuous integration (CI). CI/CD is an umbrella term that is often used to describe any software development process that includes automation.
DevOps and DevSecOps teams use automation to accelerate the build, test, and deployment stages of software development. This includes:
Continuous delivery -- QA testing is automated, but code is released manually.
Continuous deployment -- Code changes are automatically released to production as canary tests.
Continuous integration -- Developers use a shared repository like Git to automatically build and run QA tests. If a build or test fails, the CI server alerts the development team.
Continuous Delivery vs. Deployment
In addition to continuous integration and continuous delivery, CI/CD includes the concept of continuous deployment.
Unlike a continuous delivery approach, which requires operations team members to manually release code to production, continuous deployments automatically release code into production using canary tests.
A canary test is simply a code release that only goes out to a small percentage of users. In this approach, the small percentage of end users that receive the code release serve as the test environment.