A CI/CD pipeline is a series of steps that must be performed in order to deliver a new version of software. Continuous integration/continuous delivery (CI/CD) pipelines are a practice focused on improving software delivery using either a DevOps or site reliability engineering (SRE) approach.
A CI/CD pipeline introduces monitoring and automation to improve the process of application development, 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.
The steps that form a CI/CD pipeline are distinct subsets of tasks grouped into what is known as a pipeline stage. Typical pipeline stages include:
- Build - The stage where the application is compiled.
- Test - The stage where code is tested. Automation here can save both time and effort.
- Release - The stage where the application is delivered to the repository.
- Deploy - In this stage code is deployed to production.
- Validation and compliance - The steps to validate a build are determined by the needs of your organization. Image security scanning tools, like Clair, can ensure the quality of images by comparing them to known vulnerabilities (CVEs).
This is by no means a comprehensive list of pipeline stages. This list is just an example of common stages you may find. Your pipeline will be unique to the requirements of your organization.
Using the open source Tekton project you can build Kubernetes-style delivery pipelines that can control the complete lifecycle of microservices without having to rely on central teams to maintain and manage a continuous integration server, plugins, and configuration.
OpenShift Pipelines is a feature of Red Hat OpenShift built on Tekton, an open source project that provides a framework to create cloud-nativeCI/CD pipelines quickly. Tekton is a CI/CD framework for Kubernetes platforms that provides a standard cloud-native CI/CD experience with containers. As a Kubernetes-native framework, Tekton makes it easier to deploy across multiple cloud providers or hybrid environments. By making use of the Custom Resource Definitions (CRDs) in Kubernetes, Tekton uses the Kubernetes control plane to run pipeline tasks. By using standard industry specifications, Tekton will work well with existing CI/CD tools such as Jenkins, Jenkins X, Skaffold, and Knative.