Manoj Kumar K asked me via LinkedIn for some feedback on his article about the differences between Continuous Integration/Testing/Delivery and Deployment.
Here’s my response (left as a comment on the original article):
Continuous Integration is continually integrating several developer’s code, compiling, deploying and automatically testing that code (Continuous Testing), and that can be done on a branch, or in trunk/master.
When you have continual production readiness of every build, but you don’t deploy every build automatically, instead you choose to deploy say x times a week, that is Continuous Delivery.
When you automatically deploy every build to production after it’s been automatically integrated, built and tested, that is Continuous Deployment.
I’ve previously briefly explained the semantics here.
So Continuous Integration (CI) and Continuous Testing together allow Continuous Delivery. Continuous Delivery allows Continuous Deployment (should you choose to do this).
Martin Fowler explains this in more detail here.