continuous-delivery
Continuous Delivery (CD) is a software development practice where code changes are automatically built, tested, and prepared for release to production.
Continuous Delivery (CD) is a software engineering practice and a set of principles focused on automating the release process of software. It builds upon Continuous Integration (CI) by ensuring that every code change that passes automated tests is automatically prepared for a release to production. The goal is to have deployable software available at any time. In a typical CD pipeline, code is committed to a version control system, triggering an automated build and comprehensive testing suite (unit, integration, end-to-end). If all tests pass, the artifact (e.g., a container image, executable) is automatically deployed to a staging or pre-production environment. From this point, a manual approval or business decision is usually required before the final deployment to the production environment. This practice significantly reduces the risk associated with releasing software, as each change is small, well-tested, and readily deployable. It allows organizations to release features faster, respond quickly to market changes, and improve overall software quality and reliability by making the release process routine and predictable.
graph LR
Center["continuous-delivery"]:::main
Pre_logic["logic"]:::pre --> Center
click Pre_logic "/terms/logic"
Rel_cicd["cicd"]:::related -.-> Center
click Rel_cicd "/terms/cicd"
Rel_cicd_pipeline["cicd-pipeline"]:::related -.-> Center
click Rel_cicd_pipeline "/terms/cicd-pipeline"
Rel_continuous_integration["continuous-integration"]:::related -.-> Center
click Rel_continuous_integration "/terms/continuous-integration"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧠 Knowledge Check
🧒 Explain Like I'm 5
It's like always having your homework neatly organized and ready to hand in, just waiting for the teacher to say 'go'.
🤓 Expert Deep Dive
Continuous Delivery represents the penultimate stage in a mature DevOps pipeline, bridging Continuous Integration and Continuous Deployment. While CI focuses on integrating code frequently and verifying its correctness via automated builds and tests, CD extends this by ensuring the integrated code is always in a releasable state. The pipeline typically involves artifact creation, automated deployment to various non-production environments (e.g., QA, UAT, Staging), and performance/security testing. The key differentiator from Continuous Deployment is the deliberate introduction of a manual gate before production release, allowing for business validation, A/B testing coordination, or canary release strategies. Architecturally, CD relies heavily on robust CI/CD tooling (e.g., Jenkins, GitLab CI, GitHub Actions), infrastructure as code (IaC), and immutable infrastructure principles. Trade-offs include potentially slower release cadence compared to full Continuous Deployment, but it offers greater control and risk mitigation for organizations with complex release requirements or regulatory constraints.