What is CI & CD?

Sachin Shelar
4 min readDec 22, 2021

--

CI & CD

★★ Continuous Integration:

  • Continuous integration is a DevOps software development practice where developers regularly merge their code changes into a central repository, after which automated builds and tests are run.
  • The key goals of continuous integration are to find and address bugs quicker, improve software quality, and reduce the time it takes to validate and release new software updates.
  • Continuous integration refers to the build and unit testing stages of the software release process. Every revision that is committed triggers an automated build and test.
Example of CI with Jenkins.

Why is Continuous Integration Needed?

  • In the past, developers on a team might work in isolation for an extended period of time and only merge their changes to the master branch once their work was completed.
  • This made merging code changes difficult and time-consuming and also resulted in bugs accumulating for a long time without correction. These factors made it harder to deliver updates to customers quickly.

Continuous Integration Benefits

  1. Improve Developer Productivity

Continuous integration helps your team be more productive by freeing developers from manual tasks and encouraging behaviors that help reduce the number of errors and bugs released to customers.

2. Find and Address Bugs Quicker

With more frequent testing, your team can discover and address bugs earlier before they grow into larger problems later.

3. Deliver Updates Faster

Continuous integration helps your team deliver updates to their customers faster and more frequently.

★★ Continuous Delivery:

  • Continuous delivery is an extension of continuous integration since it automatically deploys all code changes to the testing and/or production environments after the build stage.
  • This means that on top of automated testing, you have an automated release process and you can deploy your application any time by clicking a button.
  • Continuous delivery lets developers automate testing beyond just unit tests so they can verify application updates across multiple dimensions before deploying to customers. These tests may include UI testing, load testing, integration testing, API reliability testing, etc.
  • In theory, with continuous delivery, you can decide to release daily, weekly, fortnightly, or whatever suits your business requirements.
  • Continuous delivery automates the entire software release process. Every revision that is committed triggers an automated flow that builds, tests, and then stages the update. The final decision to deploy to a live production environment is triggered by the developer.

Continuous Delivery Benefits:

  • Automate the Software Release Process

Continuous delivery lets your team automatically build, test, and prepare code changes for release to production so that your software delivery is more efficient and rapid.

  • Improve Developer Productivity

These practices help your team be more productive by freeing developers from manual tasks and encouraging behaviors that help reduce the number of errors and bugs deployed to customers.

  • Find and Address Bugs Quicker

Your team can discover and address bugs earlier before they grow into larger problems later with more frequent and comprehensive testing. Continuous delivery lets you more easily perform additional types of tests on your code because the entire process has been automated.

  • Deliver Updates Faster

Continuous delivery helps your team deliver updates to customers faster and more frequently. When continuous delivery is implemented properly, you will always have a deployment-ready build artifact that has passed through a standardized test process.

★★ Continuous Delivery:

  • Continuous deployment goes one step further than continuous delivery.
  • With this practice, every change that passes all stages of your production pipeline is released to your customers. There’s no human intervention, and only a failed test will prevent a new change to be deployed to production.
  • The difference between continuous delivery and continuous deployment is the presence of a manual approval to update to production. With continuous deployment, production happens automatically without explicit approval.

How the practices relate to each other

  • To put it simply continuous integration is part of both continuous delivery and continuous deployment. And continuous deployment is like continuous delivery, except that releases happen automatically.

Thanks,

--

--

Sachin Shelar
Sachin Shelar

Written by Sachin Shelar

Android | iOS | Flutter | React Native

No responses yet