Continuous integration and continuous delivery/deployment are intrinsic to DevOps. Here’s a brief overview of how these practices help in the software development cycle.
CI/CD is a popular term for continuous integration (CI) and continuous delivery (CD). It is a set of practices that automate the software development process, and aim to streamline and accelerate software delivery from development to production effectively and faster.
Let us demystify a few terms.
Continuous integration (CI): CI frequently merges code changes into a remote or shared repository such as GitLab, GitHub, or Bitbucket. Every code change in the remote repository triggers an automated build and test jobs. This helps to find issues early in the software development cycle and hence to recover faster from them.
Continuous delivery (CD): Continuous delivery is the next step after CI and enables automation in non-production environments. It makes sure that the application is always ready for deployment.
Continuous deployment (CD): Continuous deployment is a more automated approach. It helps to automate the delivery of code changes to a production environment.
Benefits of CI/CD
CI and CD provide multiple advantages for project teams in most organisations (Figure 2).
By automating the code quality check, build, test, and deployment processes, CI/CD pipelines help to reduce the time it takes to deliver new features and bug fixes. They help to fail and recover faster with less spent in terms of money and time. Human intervention in the application lifecycle management cycle is minimised, ensuring development teams focus on more important tasks. This leads to better productivity and happier people.
The CI/CD pipeline
A CI/CD pipeline is a series of automated steps that code must go through — from development to deployment — in a production environment. It usually includes the steps of application lifecycle management shown in Figure 3.
Figure 4 shows the key tools used in CI/CD implementation.
Implementing CI/CD
Implementing CI/CD in the organization, business units, or project is a difficult task. It requires a cultural shift towards automation and collaboration in an effective way by breaking traditional silos. Figure 5 shows the different high-level phases of implementing CI/CD.
Jenkins | GitLab CI | Azure DevOps | |
Integration with other tools | Adaptable using plugins | Good for GitLab and other tools integration | Good with Microsoft products and adaptable to other tools |
Ease of use | Easy to learn for beginners, but difficult to maintain and manage | Simple to use, but complicated to maintain and manage if you’re using the self-hosted Community Edition | Easy to use, since it’s in the form of SaaS; there are minimal management and maintenance efforts |
Scalability | High
controller – agent architecture |
High
runners |
High
on-premise agents and cloud agents |
Pricing | Free | Community/Commercial | Pay-as-you-go |
Quick start for usage | No; it is necessary to install and configure | No; it is necessary to install and configure | Yes; create an account and you are ready |
Jenkins vs GitLab CI vs Azure DevOps
To conclude this article, let’s understand the difference between Jenkins, GitLab CI, and Azure DevOps.