# 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]]