What is CI/CD: Continuous integration and continuous delivery explained
“CI/CD” stands for continuous integration (CI) and continuous delivery (CD) in most cases. CD could also mean “continuous deployment,” which is a similar concept to continuous delivery, but with a key distinction. In this article, we’re going to explain CI/CD as a concept, as well as the differences between continuous delivery and deployment.
The first thing you need to know about all three terms is that they’re not interchangeable. Even though they’re often used this way, each serves an important function in a larger DevOps process.
What is Continuous Integration (CI)?
As software is created, many developers may contribute codes to different parts of the overall system. This work is typically done individually (or by teams or “squads” focused on specific features). Continuous integration is the practice of automatically integrating newly contributed code into a shared repository regularly (even daily, or hourly in some cases)).
A new software build is created each time new code is integrated into the code base, then changes are validated with automated testing. If any test fails, the new code isn’t merged with the code base, an alert is automatically generated, and a debug ticket assigned. This approach can reveal issues before they arise in production.
What is Continuous Delivery (CD)?
Continuous delivery (CD) picks up where continuous integration stops. After the code is tested, validated, and merged with the code base, continuous delivery automatically delivers the validated build to the testing environment and integrated into the code repository.
As with continuous integration, automated testing is performed at each step of continuous delivery before it moves through the pipeline. Once the updated build is ready for deployment (the final step), the ops team is notified so it can be manually deployed. This allows teams to choose when and how often releases happen.
What is Continuous Deployment (CD)?
Continuous deployment (the other CD) removes manual promotion of new builds for deployment from the process with automation. With continuous deployment, as changes pass through the pipeline and are validated and approved, they are automatically pushed into production. With CI/CD/CD, every step of the process is automated. No human interaction is required unless a test fails. A mature DevOps model will almost certainly adopt CI/CD/CD.
What’s the difference between continuous delivery and continuous deployment?
The primary difference between continuous delivery and continuous deployment is automation. Instead of manually pushing changes through to the testing environment or code repository, this part is also automated. This is a crucial part of the software delivery process, as it dramatically increases efficiency and saves time. Continuous delivery is the answer to the “last mile” problem — delivery of a product is often the most time consuming and costly part of the process. Continuous deployment solves this problem through automation.
For example, let’s say you’re creating a physical product. Once that product is ready to go and a customer orders it, you ship it off. A shipping company picks it up, makes sure the package is appropriately sorted, then delivered to your customer’s doorstep. In this scenario, the shipping company is automated continuous deployment — you trust that they’ll handle the delivery logistics so you don’t have to.
With continuous delivery, you would load that product up and take it directly to your customer’s house. Sure, you can confirm that the final product is delivered correctly, but it’s time consuming and costly to do it yourself. While software delivery isn’t exactly the same, the philosophy is similar enough — if you have someone babysitting your software delivery, the entire process is slower and less agile than it has to be.
You’ll find continuous deployment at organizations with high DevOps maturity — they’ve found a tried-and-true method of code testing and delivery that works for them, so automating the final stage — deployment — only makes sense.
How CI, CD, and (the other) CD work together
As software is built and tested with CI, it is pushed to the staging environment with CD. After more successful testing and validation, the second CD (deployment) kicks in with automatic deployment into production.
In a mature DevOps environment, CI/CD/CD not only streamlines the development process, but allows for much more agile code deployment, with updates occurring as often as you like — you can push new releases hourly if you want. It also allows updates, bug fixes, and new features to reach users as soon as they’re delivered by the development team to operations or IT.
Instead of more traditional waterfall or big bang software development models, where several new features and bug fixes are added at one time on a monthly or quarterly (or longer) release cycle, these features can be added as they’re finalized. The result is fewer issues, quicker fixes, and fresh features more often.
Need a CI/CD solution for software delivery to your end devices? That’s what we do. Get in touch today!