Developers follow CI practices to integrate their code to a single repository on a common branch from which changes are validated by creating build and running automated tests against the build. This way, they know integration won’t fail during release. Every time when change happens, automated CI test the code for any failure. Continuous integration puts emphasis on testing automation to check that application is not breaking with new commits. One of the most common application, Jenkins is used for continuous integration.
Continuous delivery is an extension to continuous integration which creates automated release so you can deploy application at any point of time by clicking a button.
With Continuous Deployment, every change if pass through all stages of production pipeline is released to the customers. Human intervention will be only during a failed test which prevents new change from deployment to production. This way, developers don’t have to spend days to release product during deadline of shipping code to the customer. They can build and release software in a few minutes as soon as the code is finished.
Jenkins, Git, Ansible, Puppet, AWS code deploy can perform continuous delivery and deployment task.