Difference between Continuous Integration & Continuous Delivery

What is Continuous Integration and What is not Continuous Delivery ?

Often I have been asked “What is the difference between Continuous Integration and Continuous Delivery”. Thought I will shed some light on this topic.

Martin Fowler has described Continuous Integration as “A development practice that requires developers to integrate code into a shared repository … ”

In addition Thought works also explain Continuous Delivery as “An approach in which teams ensure that every change to the system is releasable, and release any version with the push of a button.”

So what is the difference?

Continuous integration allows multiple developers to integrate the source code into a single code base. This helps the team members to identify integration related issues early and address quickly. CI will lead to minimal SIT cycles.

CI

Once you have implemented Continuous Integration, then you should start working towards Continuous Delivery. Continuous delivery will make sure the changes are ready to deploy to production if required.

CD

Fancy to read more ?

 

Continuous Integration (CI) Tools

ci

After my last blog post, I have got very good response from individuals and organisations for help. Based on their request, I have shortlisted and booked few appointments to help them.

Last week, I had a session with an individual to help him to implement continuous integration for their Data Warehouse. I have discussed about the possible options and recommended few approaches to proceed. I am glad, I was able to share my experience and help them to take the first step.

During the session we have discussed about various CI tools available in the market and thought I will provide a little blog post to help others as well.

Continue reading “Continuous Integration (CI) Tools”

Continuous Integration for SQL Reporting Services

Problem:

What is continuous Integration and how this can be leveraged to enhance productivity for SSRS Report development?

Solution:

Introduction:

Continuous Integration is a software practice of merging developer code into shared mainline repository different times a day.

Continuous Integration is an iterative process, in which we build, run test cases and deploy the components to validate the changes made by the developer. The developer will be notified with the results as soon as the changes have been made. This helps the developer to test the components as he/she develops.

Source Code Checkout for Build :

The CI framework (Build Plan) will checkout the source code from the source control. This code base will be built and the developer will be notified the outcome immediately. This helps the developer to fix the bug as soon as the changes have been checked-in. The build can be manual, scheduled or event driven (Based on the changes to code).

Validate the build:

The build can be validated by running a set of test cases. The success or failure of the test cases will help to validate the changes.

Test as we develop:

All of the above mentioned steps will happen in a short period of time (depends on the volume of the build assets). This helps to fix the bugs during the development.

Users of Continuous Integration (CI):

The CI framework mainly improves the development process. Hence the Developers and Test Engineers will greatly benefit from the process. This also helps to reduce the Release overhead for Release Engineer/Manager.

As the bug gets fixed early in the process, the business confidence will increase. Hence the project management is benefitted with the reduction in development time.

CI Tools:

As CI is a practice , we need a tool to implement this. Jenkins CI is an open source CI tool. Below is a list of commercial CI tools in the industry

  1. Bamboo (Atlassian)
  2. TeamCity (JetBrains)

 

CI Advantages:

From the above details, it is prudent that Continuous Integration helps to self-test the code.

As the bugs get identified and fixed early in the development process, this helps to reduce the risk.

This process enables the cohesive and agile development methodologies.

Conclusion:

Next Steps: