Last updated on - September 11th, 2018
Welcome to the world of CI & CD. In this article will talk about ‘What is Continuous Integration – Big Picture‘.
There are many buzzwords nowadays, industries and people are talking about. These words are continuous integration and continuous delivery (CI & CD), DevOps etc.
Continuous Integration (CI) and Continuous Delivery (CD) together empower the organization to design better software, deliver it faster, at the lower price, and react to the needs of the customer promptly.
Here, in Continuous Integration (CI), I will proceed with the discussion on below topics
- How CI Can Help You
- Understanding the Typical Process
- Identify the Improvement Area
- What is Continuous Integration
- Continuous Integration Principles
- Benefits of Continuous Integration
How CI Can Help
Continuous Integration helps us to accomplish high value at lower cost and with more flexibility.
- Faster Delivery: You can release software and new features quickly to the customer.
- High Quality: You can build software of high quality with fewer errors.
- Lower Price: The entire process will cost less effort, resulting in lower costs.
- More Flexibility: This makes us more flexible to act on the need of the customers because of quick feedback.
How do we accomplish all this?
The answer is by using Continuous Integration (CI).
Let’s be a part of discussion ahead to understand how to achieve all this by implementing Continuous Integration.
Understanding the Typical Process
Here, is an overview of typical software development and deployment process.
Software development teams create software for particular software modules. They run & validate their piece of code into feature branches in source control.
The integration team or build engineer merge these branches for the different modules into the master branch in source control.
This integration happens once in every iteration let’s say of a couple of weeks or months.
Integration team build the code and create release and installation guide to the operations team.
The operations team follow the guide and install the software in different environments.
Identify the Improvement Area
Here, there are some areas that we can improve by implementing CI.
The integration is done once in each iteration of one month. This process is manual which takes a lot of efforts and can be error-prone.
As this happens once in a month, so the feedback cycle is also large to know about any bugs or rework.
Issues are only found at the end of the development process when integration takes place.
That’s when the teams get to know if their code works fine with the code of the other teams.
This causes a lot of delays and blocks the releases.
We can improve the process a lot, just by changing the integration part using CI.
What is Continuous Integration – Big Picture
Now you know what you can improve, let’s see if we can do so with continuous integration.
As per the definition of continuous integration:
“A Software development practice that requires developers to merge their code into a central source code repository many times in a day.”
What is Continuous Integration
Continuous integration is the software development practice to merge their code into a central repository.
Development process needs to change the way that works.
Developers should now use a central source control repository where every individual need to integrate their code themselves.
As soon as they integrate their code to the main-line on central code repository, an automated test triggers to verify the latest changes along with previous.
Each developer has to put more effort to make sure that their code works with the rest of the code.
That is the CI culture. However, to get maximum benefits of CI, you need to follow CI principles.
Continuous Integration Principles
Continuous integration can be successfully implemented if an organization adheres to below principles.
- A single place for the code: You need to have a single place to put all your code, this is usually in source control repository like GitHub.
- Everyone commits to the main-line every day: In CI, all developers should check-in their code at least once a day. However, multiple check-ins are always allowed.
- Automated build process: Build process should be automated, to build & execute the latest code changes with previous code.
- Every commit triggers a build: In continuous integration testing, as soon as developers commit changes to mainline, it should trigger the build process automatically in continuous integration tools like Jenkins.
- Automate the testing process as much as possible: The automated test should be ready to validate the functionality of the applications after every commit. Explore the popular automated testing tool and choose the right automated testing tool to automate the testing activities.
- Everyone can see everything: All the stakeholders should have access to see everything like code base, configurations, build status, automated test run result etc.
- Don’t break the build: Run & verify new changes on local before committing it to source control. Do not commit if the new code is going to break the build. If you break the build, you should fix it asap.
- Don’t remove failed steps: Do not remove or comment steps which are failing in the pipeline. Instead, you should fix it to make the pipeline green.
Benefits of Continuous Integration
- Integration takes less effort: In CI, integration takes place on daily basis by each individual, not by the central team like integration team. In a typical situation, integration happens once every iteration of one month.
- Reduces feedback cycle: Because integration is done on the daily basis, developers come to know any issue on the same day only. So, the feedback cycle is now one day.
- Automation means fewer issues: All the activities are automated. So, no manual activities take place and there will not be any human errors, which result in fewer issues.
- The process is visible to everybody: As per the CI principles, everything should be visible to everybody.
- Improves team communication: CI improves collaboration between the different teams. If there are any issues in the build, one team member needs to discuss with the members of another team to figure out the problems. This is also one of the important principles of DevOps culture.
- More Productive: CI makes team more productive and work progress is visible to everyone.
I hope this article helped you to understand Continuous Integration (CI) Culture and how CI can help us to achieve High Quality, Faster Delivery, Lower Price, and More Flexibility that we discussed at the beginning of this article.
Next, I will walk you through continuous delivery, its culture, and benefit in details. I will also discuss how continuous integration and continuous delivery (CI & CD) work together in DevOps culture. You will also get to know the difference between continuous integration and continuous delivery.
Let me know if you have any questions or you face any issue while implementing CI in your project. Share your thoughts in the comment section.
Do you know someone who can benefit from the information in the article? Share it with them on Facebook, LinkedIn, Twitter or Google Plus.
For Further Reading:
- How to Create a Project in Eclipse
- How Automated Testing Tools Work
- Are You a Technical Tester?
- How to Learn Automation Testing Easily