In this post, I want to briefly explain the differences between Continuous Integration, Continuous Delivery, and Continuous Deployment. I will keep this very brief and try to make it as easy to understand as possible.
What is Continuous Integration
Continuous integration is about automating building and testing of software and performing these two processes as frequently as possible. Continuous Integration aims to avoid the integration problems of midsize to large projects by building and testing the code automatically whenever a new code is submitted to your repository. For example, in our project, we trigger a Jenkins pipeline whenever a new pull-request is created in Bitbucket. This way, you can avoid the Integration hell problem that you would face otherwise.
What is Continuous Delivery
Continuous Delivery is Continuous Integration + artifact generation & storage. Continuous delivery takes us one step further and adds to the pipeline the necessary steps for creating executables that are ready to be deployed.
What is Continuous Deployment
You can think about Continuous Deployment as Continuous Integration + Continuous Delivery + deployment of the generated executables to the production or similar environment. In our case, it is the DEV project (namespace) in OpenShift (see the diagram below).
Continuous Integration and Continuous Deployment with OpenShift
Not too many words are needed here. Just see the diagram below to understand what is going on. This is the pipeline that I have set up for our project with help from my friends in Red Hat (cheers to Michael Thirion).
Hope this helps.