What is “Continuous Integration”

DevOps, Continuous Integration, Continuous Testing, Continuous Delivery, Continuous Deployments etc are some of the most commonly used terms in the IT industry now a days, but what does actually some of these term means?. Why they are becoming an integral part of any software Delivery lifecycle. Let’s understand about one of the list term “Continuous Integration” before moving to the tools.

Lets Understand CI from Developers Point of view:


Continuous Integration is a term which means “checking the compatibility of a change you have made with the remaining code base or modules of an application or to check the impact of that change on the application functionality”.

Continuous Integration is not helping us in fixing the bugs but it helps us to Identify those bugs in the early phases of a development lifecycle and with much faster rate. This makes it much easier for the developer to fix the bugs quickly instead of investing time in searching which change is responsible for certain functionality break if we integrate our code after a long gap.

CI

Continuous Integration does not only mean Continuous compilation or packaging of a code but Continuous Integration actually means running Continuous Testing on your code base which is only possible with a strong test suite covering all the functional aspects of an application to catch even a minor functionality break occur with the change in code.

CI Cycle

These days developers are following the TDD (Test Driven Deployment) approach and run Continuous Integration along with the same to make the high impact and cover each and every scenario.

Continuous Integration is not the sole responsibility of the developers but every individual working in the team is responsible for the Healthy Continuous Integration.

Lets Understand CI from Infrastructure Point of view:


IaC (Infrastructure as a Code) is a widely used term in the Infrastructure Vertical today. All Configuration Management tools (Puppet/Chef/Ansible/Salt) are used to configure, manage or monitor complete Infrastructure in the form of code. Now all these codes are written by Infrastructure people, and whenever we talk about code it should be on some central repository which is accessible by the team and may require regular amendments or updates to change anything at the Infrastructure side.

Do you think every time you should change a code in the repository and then manually amend those changes in the Configuration Management tools and then push those changes in the Infrastructure. I would say “its too time consuming” . Why don’t we should have some mechanism wherein whenever their is a change in our central repository, a trigger should generate and take our changes, amend them with Configuration Management tools and apply them on the Infrastructure. Yes! you guessed it rightly, this is exactly what Continuous Integration is doing and when you apply the changes in the Infrastructure it become “Continuous Deployments”.

Continuous Integration is a development practice that requires developers/Infrastructure people to integrate their code into a shared repository at regular intervals. This concept was meant to remove the problem of finding later occurrence of issues in the build lifecycle. Continuous integration requires the developers to have frequent builds and Infrastructure people to have multiple new modules or amendments in the existing modules. The common practice is that whenever a code commit occurs, a build should be triggered.

CI Tools:


There are multiple tools available in market both Open Source and Enterprise tools to help organization to configure and run their CI builds. I am listing few such tools below for your information and reference.

There are many more CI tools like Quick Build, GoCD, CircleCI, CruiseControl and so on.

This is what Continuous Integration is, in our next post we will understand about one of the most famous Opensource CI Tools called “Jenkins”.

3 thoughts on “What is “Continuous Integration””

  1. Pingback: Introduction to Jenkins a CI tool – Thinknyx

  2. Pingback: Jenkins Installation – Thinknyx

  3. Pingback: Popular Jenkins Plug-in’s – Thinknyx

Leave a Comment

Your email address will not be published.