Continuous integration and Continuous delivery

Continuous integration and Continuous delivery

Continuous integration (CI) and continuous delivery (CD) are two acronyms that are often mentioned when people talk about modern development practices. The implementation is also known as the CI/CD pipeline and is one of the best practices for DevOps teams to implement. But CD can either mean continuous delivery or continuous deployment and while those two practices have a lot in common, they also have a significant difference that can have critical consequences for a business. Almost all projects stored on GitHub, Bitbucket, GitLab or another version control repository hosting services. And they have a bunch of triggers (e.g. pushing or pull requesting) which we can use for CI/CD pipeline. So continues process includes building, testing and deployment and with each commit, code can be passed throw these 3 segments.

Continuous integration

Whenever the developer's make changes that very changes are validated by creating a build process and running automated tests against the build. CI helps development teams avoid “integration hell” where the software works on individual developers machines, but it fails when all developers integrate their code together. CI puts hard work on testing automation to check that the application is not broken whenever new commits are integrated into separate branches and the benefit is that our main branch is clean. After only the successful result developers can merge or rebase their branches to the main branch so CI is safer and faster. Yes, that's it what CI does.

continuous-integration.png

Continuous delivery and deployment

Continuous delivery is an extension of continuous integration to make sure that you can release new changes to your customers quickly in a sustainable way so after code is successfully accepted in the CI stage and a logical function can be tested, it is released to production. With continuous delivery, you can decide to release daily, weekly, or whatever suits your business requirements. Continuous deployment goes one step further than continuous delivery. What does it do? After changes have been successfully accepted in the CI/CD cycle it pushes into the production environment.

1_MO4rRz2zHoI7hHeqwd7yzw.gif

What you gain

  • You can develop faster as there's no need to pause development for releases. Deployments pipelines are triggered automatically for every change.
  • Releases are less risky and easier to fix in case of a problem as you deploy small batches of changes.
  • More test reliability and code quality.

Best CI/CD Tools

Developers can best utilize the CI/CD process by leveraging on Open Source tooling or AWS services that automate various integration, deployment, and release management tasks. With the overflowing number of CI/CD tools available in the market, teams may struggle to have to make difficult decisions to pick out the right tools. The image below contains the CI/CD tools in the market, along with their key features, to make the selection process easier for you and your team.

Top-5-CICD-Tools-1024x558.png

As I'm fun of Jenkins and prefer it to others I'll write only about it.

1. Jenkins jenkins.png Jenkins is a simple, extensible, an open-source automation server in which the central build and continuous integration process take place. Jenkins supports SCM tools such as StarTeam, Subversion, CVS, Git, AccuRev and so on. It is a self-contained Java-based program with packages for Windows, macOS, and other Unix-like operating systems.

Jenkins key features:

  • Easy installation and upgrade on various OSs including Windows :)
  • Simple but not user-friendly interface :)
  • Extensible with huge community-contributed plugin resource
  • Easy environment configuration in the user interface
  • Supports shells and Windows command execution in pre-build steps
  • Supports notification on the build status
  • Easy debugging
  • Automated parallelization using slaves

For me, as a developer, Jenkins is the best choice, it's really easy and cool!
And if you are using GitHub, you will not face any problems with Jenkins. Jenkins also works perfectly with other version control repository hosting services.

jenkinsUI.png

You can find Jenkins here: https://jenkins.io/

Also, you can read this cool article about the Best 14 CI/CD Tools You Must Know | Updated for 2019/2020

Thanks for reading!!!