These are obviously stolen from Martin Fowler’s ..however, being a person involved in this subject every day, hear this misunderstanding every day too.. so, an attempt to clarify
CI – Continuous Integration
- Small batches committed to version control repo
- Single source of truth maintained
- Automated build picks up every single commit
- Every build is self tested with unit testing
- Every build is verified for coding standards
Most critical cultural aspect – this stays green always, team is motivated to keep this green rather than checking in bad code on top of broken code base.
CD – Continuous Delivery
Next level of evolution.
- Reduced Deployment risk – small batch of changes deployed thru the environments, problems identified and fixed
- Faster, Automated feedback – as code travers thru different environments, different automated testing techniques applied and feedback helps building confidence on the code change
- Production readiness – confirms that you are able to deploy the code in many production like environments and verified code is ready to be pushed to production any moment, but you may prefer NOT to deploy every single change to production
Most critical cultural aspect – your team commits to keep the software production ready over working on new features
CD – Continuous Deployment
Almost similar to Continuous Delivery BUT every single change is deployed to production and verified successfully.
On a given day, production gets several value added incremental changes. Possibly the highest level of maturity, however, it needs Continuous Delivery in practice and that intern needs Continuous Integration in practice.