What is CI, CD & CT?

CI/CD is an important DevOps practice, introducing a CI/CD pipeline into our software development lifecycle allows us to efficiently implement automation and monitor code changes, new features, potential bug fixes, and more.

CI/CD typically refers to continuous integration and continuous delivery, but the “CD” can also stand for continuous deployment. Continuous delivery and continuous deployment both refer to automating stages of the CI/CD pipeline, but continuous deployment goes a step further. The purpose of continuous delivery is to make it easy to deploy new code.

What is continuous integration?

CI involves merging code changes from developers into a shared repository, building and testing the code automatically, and alerting the team of any issues

Continuous integration aims to reduce the amount of time and effort required to integrate code changes and ensure that the software is always in a stable and working state. This is achieved through several practices, including:

  • Local testing: This involves running tests locally on the code after each change is made, to ensure catching any bugs or regressions early in the cycle.

  • Code review: This includes a code review process, where other team members review the code changes before they are merged into the main repository. This can help identify issues around the code as well as product quality.

What is continuous delivery?

Continuous delivery is a software development practice that works in conjunction with CI to automate the infrastructure provisioning and application release process.

Once code has been tested and built as part of the CI process, CD takes over during the final stages to ensure it's packaged with everything it needs to deploy to any environment at any time. CD can cover everything from provisioning the infrastructure to deploying the application to the testing or production environment.

With CD, the software is built so that it can be deployed to production at any time. Then you can trigger the deployments manually or move to continuous deployment, where deployments are automated as well.

What is continuous deployment?

CD is about automating the process of releasing code changes to production environments. With continuous deployment, DevOps teams set the criteria for code releases ahead of time and when those criteria are met and validated, the code is deployed into the production environment. This allows organizations to be more nimble and get new features into the hands of users faster.

It is a more advanced form of continuous delivery, where code changes are automatically released to users as soon as they pass the build and test process. Continuous deployment helps teams ship software faster and more frequently, by eliminating the need for manual approvals or manual steps in the release process. It requires a high level of automation and testing, as well as a robust infrastructure for deploying code changes.

CI/CD tools

A good CI/CD tool can help you create a strong CI/CD pipeline. Popular CI/CD tools include:

  • Jenkins: Jenkins is an open-source, Java-based automation server that supports building, deploying, and automating software development processes.

  • CircleCI: CircleCI supports software development and publishing. It allows you to automate the entire pipeline, and integrate with services like GitHub, GitHub Enterprise, and Bitbucket to perform builds when code is committed.

  • GitLab: GitLab provides a suite of tools for managing the software development lifecycle. You can perform builds, run tests, and deploy code. It also allows you to build jobs in a VM, Docker container, or a different server.

Major cloud providers, such as Microsoft, Amazon, and Google, also offer CI/CD process tools:

  • Azure DevOps: Azure DevOps provides a variety of CI/CD tools, like Git repo management, testing, reporting, and more. It provides support for Azure, Kubernetes, and VM-based resources.

  • AWS CodePipeline: AWS CodePipeline is a continuous delivery service that allows you to automate release pipelines. It easily integrates with third-party services like GitHub.

  • Cloud Build from Google Cloud Platform (GCP): Cloud Build from GCP is a serverless CI/CD platform that allows you to build software across all languages, such as Java and Go, deploy across multiple environments, and access cloud-hosted CI/CD workflows within your own private network.

What is continuous Testing?

CT involves continuously running tests to ensure the quality and functionality of the code. Continuous testing is a software testing practice where tests are continuously run in order to identify bugs as soon as they are introduced into the codebase. In a CI/CD pipeline, continuous testing is typically performed automatically, with each code change triggering a series of tests to ensure that the application is still working as expected. This can help to identify problems early in the development process and prevent them from becoming more difficult and costly to fix later on. Continuous testing can also provide valuable feedback to developers about the quality of their code, helping them to identify and address potential issues before they are released to production.

In continuous testing, various types of tests are performed within the CI/CD pipeline. These can include:
  • Unit testing, which checks that individual units of code work as expected

  • Integration testing, which verifies how different modules or services within an application work together

  • Regression testing, which is performed after a bug is fixed to ensure that specific bug won't occur again

Comments

Popular posts from this blog

What are compatibility tests and how are they performed?

What Is a Use Case, Purpose of Use Case and How to Write Use Case?

How to log a bug with a detailed description ?