Understanding CI/CD

0
71

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.

Figure 1: Continuous integration (CI) and continuous delivery (CD)

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).

Figure 2: Key benefits of CI/CD

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 3: Application lifecycle management

Figure 4 shows the key tools used in CI/CD implementation.

Figure 4: Key tools
Figure 5: Different phases of implementing CI/CD

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.

LEAVE A REPLY

Please enter your comment!
Please enter your name here