What is a CI/CD Pipeline?
The goal of CI/CD is to automate as many steps of software development as possible in order to minimize manual effort. There are a variety of ways to achieve this.
But before diving deeper, let's clarify the question: what is a pipeline?
Well, at its simplest, it is a series of activities that are carried out in a predefined order.
A CI/CD pipeline's goal is to automate as many steps of software development as possible to reduce manual effort.
Now, there is some confusion around the acronym CI/CD. To clarify: "CI" stands for Continuous Integration, while the "CD" can stand for either Continuous Delivery or Continuous Deployment.
Each of the different Continuous X types does not stand isolated or side by side, instead they build upon each other. Continuous Integration is the foundation, which includes several principles. Ultimately, there is always a stable build available.
Continuous Integration (CI): Basic Flow
Watch this video to learn about the basic flow of continuous integration.
On top of Continuous Integration is Continuous Delivery. While a stable build is always available with CI, Continuous Delivery defines the software in such a way that it is ready for deployment on the production system, whereby the trigger for the deployment is a human decision. Deployment must therefore be triggered manually, or automatically, for example just by pressing a button.
Facts about Continuous Delivery:
- Software is ready for deployment to a productive system all the time.
- Deployment to a productive system is triggered manually.
- Feedback from a productive system gets quickly integrated into teams’ backlog.
On top of the Continuous Delivery, Continuous Deployment means, that the deployment to the productive system is triggered with each commit. It is important to be aware that Continuous Delivery and Continuous Deployment are sometimes not clearly separated. Which means that some sources (like blogs, books,...) talk about Continuous Deployment while they mean Continuous Delivery! To avoid misunderstandings, you should always clarify these definitions when talking about CI/CD.
Facts about Continuous Deployment:
Deployment to a productive system is triggered automatically (instead of manual deployment as in Continuous Delivery).
Putting all these pieces together, you can create a fully automated pipeline to build, test, and deploy your application.
By now, you have a more profound understanding of the core principles and benefits of a CI/CD pipeline.
In short, Continuous Integration (CI) is the adoption of agile principles while Continuous Delivery/Deployment (CD) is a combination of agile methodology techniques and a high-quality delivery process. The goal is to validate each change (commit), preferably in an automated way, so that it can potentially be delivered in a reliable manner.
These resources might be helpful if you want to dive deeper into CI/CD: SAP Solutions for CI/CD.