Today, I'm inaugurating a new category on the blog: DevOps basics! and we will start with CICDCD.
It is a question usually asked in interviews: what is CI/CD, what do you think of Continuous Deployment?
Let's see first what a deployment is, then establish what are those CI, CD, CD about.
Deployment
A deployment is an act of installing/activating the software/binaries. During deployment, if an existing version is there, then uninstalling/deactivating the previous version takes place. A release is the culmination of all the activities to get changes safely into production.
Continuous Integration
CI is the automation of builds. The code change needs to be merged, committed into the source code repo, and checked against it.
Continuous Integration solves 3 main problems: having the builds be:
- repeatable,
- consistent,
- available.
The build pipeline has to be fast and reliable, as it will be run multiple times after being triggered.
Continuous Deployment
Continuous Deployment focuses – just like the name implies – forcuses on the deployment; the actual installation and distribution of the bits.
As Continuous Integration provides a deployable artifact, Continuous Deployment can take that artifact forward into additional environments.
Continuous Delivery
Continuous Delivery is the automation of steps to safely get changes into production.
It's important to make clear that every change that passes all stages of your production pipeline is released to your customers. There's no human intervention, and only a failed test will prevent a new change to be deployed to production.
As you can imagine, testing needs to be more than solid before considering this strategy.
Opinions
Interviewers usually ask about Continuous Delivery as it gives a good insights into someone thoughts and experience.
For example, in some companies, it's totally accepted and recommended to have releases automatically going into production. Very little manual testing is done - if at all.
In a lot of companies, it is unthinkable. Every change would go through a monthly/or-more release, heavy manual testing and business signing and testing on top.
Continuous Integration and Continuous delivery is usually already present in every company (except some start-ups). They're usually set up with Jenkins, Team City, Azure DevOps, ...
That was it for today :). Hope this was useful, if you have any questions, don't hesitate!
Top comments (1)
Could you throw some light on how to build the same using Jenkins .