Ubuntu Pro, Canonical’s comprehensive subscription for secure open source and compliance, is now generally available.
A healthy CI/CD pipeline ensures that your DevOps journey is headed toward success. Continuous integration, continuous delivery and continuous deployment each play an important role in the CI/CD pipeline, and it's important to differentiate between each.
Understanding the unique role of each CI/CD component will set you on a path toward better software and happier customers. DevOps Institute Ambassadors always have unique insights, so I asked several of them to explain how they would describe the difference between continuous integration, continuous delivery and continuous deployment.
Helen Beal, Chief Ambassador, DevOps Institute
"Once a team has its developers committing code at least once daily, a build is automated on every commit, and the unit, integration and user acceptance tests are run automatically (and problems are prioritized for remediation), they are practicing continuous integration (CI). Now they are in a position where they can practice continuous delivery because their software is always in a releasable state. This means they can release at any point in time, likely because it's deemed best for the customer. However, it requires manual intervention. Continuous deployment is when the changed code is pushed to live automatically when it passes the tests in CI."
Marc Hornbeek, CEO and Principal Consultant, Engineering DevOps Consulting
"Continuous integration systems ensure software changes are efficiently merged, built, tested and archived to produce release candidate artifacts. Continuous delivery processes verify release candidate artifacts, prepare them together with the required infrastructure or deployment, and validate that the software releases are ready for deployment. Continuous deployment processes ensure that software releases are deployed to production safely and validate the released software once deployed."
Parveen Arora, Founder and Director, VVnT SeQuor
"Continuous integration serves the purpose of automating our builds. It's the practice of merging code changes back into the main branch as quickly and as often as possible. In this step, all code is merged as developers complete code in order to run automated builds and tests.
However, in continuous delivery all code changes are automatically deployed to the testing environment from the build stage, which practically makes this process a direct extension of continuous integration. This movement to production is a manual step.
Now a variant of continuous delivery is continuous deployment, which is the process of moving software that has been built and tested successfully into production. Continuous deployment takes the entire process of continuous delivery a step further by releasing every change that passes through the production pipeline directly to our clients. If an automated test fails, then the change will not be sent, but if everything checks out in testing, the changes are deployed automatically."
Vishnu Vasudevan, Head of Product at Opsera
"If you look at continuous integration, it's all about moving the source of your code to the build state with static code analysis and then incorporating some sort of testing. Continuous delivery is all about moving the code into production. Continuous deployment is all about how agile the process is and how the team operates. For instance, are you able to deploy the code at will, on-demand, with a good, blue-green deployment strategy? Or do you use a shadow deployment or rolling deployment strategy?
The major difference between continuous deployment and continuous delivery is that continuous delivery is related to the frequent churn of new features into production for the customer, which is valued at the business level by understanding what customer value is being realized. Continuous deployment is more related to DevOps functionality with respect to the tools and automation strategy around CI/CD best practices, particularly for governance and compliance."
Tracy Ragan, CEO and Co-founder, DeployHub
"These terms seem to be interchangeable, but they are not. Let's start at the top. Continuous delivery (CD) is a software lifecycle process. A CD workflow defines and automates ALL of the steps required to move code, starting at the change request and ending in the user's hands. There are many steps in between. Continuous Integration manages the first step dealing with version control and binary creation (software build). Continuous deployment is called at multiple states of the lifecycle process. It can be called to deploy binaries to developers, testers or production end-users.
So, continuous integration addresses the build, continuous deployment manages the move of those binaries to whoever needs them, and continuous delivery orchestrates the entire process like a job scheduler. Continuous integration, continuous delivery and continuous deployment are used to automate the toil of moving software changes through the lifecycle as quickly and safely as possible. We did not mention continuous testing, but that is also part of the continuous delivery process. It is called once continuous deployment has delivered new binaries. It can be done in all states, performing different kinds of tests (unit, system, smoke, etc.)."
Ryan Sheldrake, Field CTO - EMEA, Lacework
"Continuous integration: The merge to a branch or master/main on every code commit to ensure a full ‘build' can be performed based on the delta change e.g., what was committed.
Continuous delivery: The continuation of the above to a ‘repository' that all release candidates and/or tags could, in theory, be deployed globally or to a subset of the target production estate or system.
Continuous deployment: The continual flow from developers/engineers into production (or subsections of the production estate, e.g. green/blue/canary) due to a high confidence in automated testing that no longer required a CAB/gate or ‘change slot' to go live."
Continuous integration, continuous deployment and continuous delivery each play an important role in the software delivery lifecycle. As Tracy Ragan noted, the terms may seem interchangeable but they are not.
To learn more about CI/CD, join DevOps Institute for SKILup Day: CI/CD on April 21, 2022. Register here to save your seat.