Deployment Pipelines
Deployment pipelines (or Continuous Delivery pipelines) are the cornerstone of Continuous Delivery as they automate all the stages (build, test, release, etc.) of your software delivery process.
There are numerous benefits to using Continuous Deployment pipelines. An automated pipeline allows all stakeholders to monitor the progress, eliminates the overhead of all the manual work, provides quick feedback, and more importantly builds confidence on the code quality.
Continuous Delivery Pipeline (CDP)
The deployment pipeline run starts with a developer committing source code change into a version control repository. The CI server detects the new commit, compiles the code, and runs unit tests. The next stage is deploying the artifacts (files generated from a build) to staging or a feature test environment where you run additional functional, regression, and acceptance tests. Once all the tests are successful, you are ready to deploy into production. In case of failure during any stage, the workflow stops and an immediate feedback is sent back to the developer.
Tools for Deployment Pipeline
In order to automate the various stages of your deployment pipeline, you will need multiple tools. For example:
- a version control system such as Git to store your source code
- a Continuous Integration (CI) tool such as Jenkins to run automated builds
- test frameworks such as xUnit, Selenium, etc., to run various test suites
- a binary repository such as Artifactory to store build artifacts
- configuration management tools such as Ansible
- a single dashboard to make the progress visible to everyone
- frequent feedback in the form of emails, or Slack notifications.
And that’s not all. You will also need a single tool that can bring all these tools together to achieve CI/CD goals which is to automate software delivery.
CI/CD Tools
There is a large number of open source (free) and enterprise (paid) CI/CD tools available in the market. Here is a matrix that compares some of the most popular CI/CD tools based on the type of offering (paid or free), licensing (open source or closed source), hosting (on-premise or cloud), and extensions/plugins.
CI/CD Tools |
Feature: |
Feature: |
Feature: |
Feature: |
Atlassian |
Paid | Closed | On-premises | ** |
Bitbucket |
Paid | Closed | Cloud/ On-premises |
** |
AWS |
Paid | Closed | Cloud | * |
Azure |
Paid | Closed | Cloud | ** |
Circle CI |
Paid | Closed | On-premises/ Cloud |
*** |
CloudBees |
Paid | Closed | On-premises/ Cloud |
***** |
GitHub |
Paid | Closed | On-premises/ Cloud |
*** |
GitLab |
Free/Paid | OSS/Closed | On-premises/ Cloud |
* |
Google Cloud |
Paid | Closed | Cloud | ** |
Jenkins |
Free | OSS | On-premises/ Cloud |
***** |
Travis CI |
Paid | Closed | On-premises/ Cloud |
*** |
Reference: https://courses.edx.org/courses/course-v1:LinuxFoundationX+LFS167x+2T2020/