# Continuous Delivery (CD) Continuous Delivery (CD) is a software development practice where code changes are automatically built, tested, and prepared for release to production. The key distinction from [[Continuous Deployment (CD)|Continuous Deployment]] is that Continuous Delivery requires a **manual approval** step before deploying to production. Continuous Delivery ensures that software can be released at any time with confidence, even if the actual deployment is triggered manually by a human decision. ## Key Characteristics - **Always releasable**: Code in main branch is always production-ready - **Automated pipeline**: Build, test, stage automatically - **Manual gate**: Human approval required for production deployment - **Low risk releases**: Small, frequent changes reduce risk - **Fast feedback**: Issues caught early in the pipeline ## Continuous Delivery vs Continuous Deployment | Aspect | Continuous Delivery | Continuous Deployment | |--------|---------------------|----------------------| | Production deploy | Manual approval | Fully automated | | Human intervention | Required | None (except rollback) | | Risk tolerance | Lower | Higher | | Release frequency | On-demand | Every passing build | See also: [[Continuous Deployment (CD)]] ## Pipeline Flow ``` Code → Build → Test → Stage → [Manual Approval] → Production ↓ Preview/QA ``` ## Benefits - Reduced deployment risk through automation - Faster time to market - Reliable, repeatable release process - Better collaboration between Dev and Ops - Confidence in release quality ## References - https://en.wikipedia.org/wiki/Continuous_delivery - https://continuousdelivery.com ## Related - [[Dave Farley]] - [[Continuous Integration (CI)]] - [[Continuous Deployment (CD)]] - [[CI CD pipelines]] - [[DevOps]] - [[GitHub]] - [[GitLab]]