Overview
Continuous delivery is a software development practice that uses automation to speed the release of new code.
It establishes a process through which a developer’s changes to an application can be pushed to a code repository or container registry through automation.
How is continuous delivery related to CI/CD?
Continuous delivery makes up part of CI/CD, a method to frequently deliver software by automating some of the stages of app development.
The "CI" in CI/CD refers to continuous integration. With continuous integration, new code changes to an app are regularly built, tested, and merged into a shared repository. It’s a solution to the problem of having too many branches of an app in development at once that might conflict with each other.
The “CD” in CI/CD can refer to continuous deployment or continuous delivery, which describe ways to automate further stages of the pipeline.
What’s the difference between continuous delivery and continuous deployment?
Continuous delivery and continuous deployment, while closely related concepts, are sometimes used separately to specify just how much automation is happening.
Continuous delivery usually means a development team’s changes to an application are automatically bug tested and uploaded to a repository (like GitHub or a container registry), where they can then be deployed to a live production environment by the operations team. It’s an answer to the problem of poor visibility and communication between dev and business teams. To that end, the purpose of continuous delivery is to ensure that it takes minimal effort to deploy new code.
Continuous deployment, on the other hand, covers some additional steps through the release process of the new software. It usually includes the process of automatically releasing a developer’s changes from the repository to production, where it is usable by customers. It addresses the problem of overloading operations teams with manual processes that slow down the app delivery process. It builds on the benefits of continuous delivery by automating the next stage in the pipeline.
Transformation takes practice
Read how open digital transformation leads to meaningful outcomes through 3 customer case studies.
What is a CI/CD pipeline?
A CI/CD pipeline is a series of steps performed in order to deliver a new version of software. When you’ve put CI/CD into practice, you’ve established a CI/CD pipeline.
A CI/CD pipeline introduces monitoring and automation to improve the application development workflow, particularly at the integration and testing phases, as well as during delivery and deployment.
Although it is possible to manually execute each of the steps of a CI/CD pipeline, the true value of CI/CD pipelines is realized through automation of the application lifecycle.
How is continuous delivery related to DevOps?
DevOps, a concept that combines the practices of “development” and “operations,” is an approach to culture, automation, and platform design intended to deliver increased business value and responsiveness through rapid, high-quality service delivery.
Continuous delivery is a specific software development practice that’s often applied in connection with DevOps. A DevOps approach is likely to involve the creation of a continuous delivery pipeline.
DevOps describes approaches to speeding up the processes by which an idea (like a new software feature, a request for enhancement, or a bug fix) goes from development to deployment in a production environment where it can provide value to the user.
With DevOps, developers, usually coding in a standard development environment, work closely with testers and IT operations teams to speed software builds, code commits, unit tests, and releases—without sacrificing reliability.
A major outcome of implementing DevOps is a CI/CD pipeline supported by development and operations teams working together using an agile methodology.
How does pipeline automation support continuous delivery?
CI/CD relies on automation to speed the processes of development, deployment, and testing. Automation helps maintain quality while reducing human error. Automation can also support security as part of a DevSecOps strategy.
Some tools specifically handle the integration (CI) side, some manage development and deployment (CD), while others specialize in continuous testing or related functions.
One of the best known open source tools for CI/CD is the automation server Jenkins. Jenkins is designed to handle anything from a simple CI server to a complete CD hub.
Another commonly used open source project is Tekton, part of the Continuous Delivery Foundation. Tekton provides the ability to describe delivery pipelines declaratively using Kubernetes concepts and execute them on-demand in containers.
Tekton is the basis for OpenShift Pipelines, a CI/CD solution for Red Hat® OpenShift®.