How CICD Can Make a Difference?
Note: This post is a part of our series InfoBeans Innovation Day 2019. You can learn about how it all started in our first post here.
While our first technology conference- InfoBeans Innovation Day 2019 turned out to be amazing for all the attendees, we’d like you to be a part of it too. In case you missed the session, we’ve got you covered. With this post, we will share insights about CICD represented by our Automation team at the conference.
CICD– Ever heard of that term before? Well, if you belong to the field of software development, you might surely be familiar with Continuous Integration and Continuous Delivery. CICD is a set of operating principles which is used to increase their working rate of the DevOps teams. CICD allows them to implement the code and make changes to it more frequently and reliably.
Covering CICD technology, Shobhit Sethi conducted an interesting session at our innovation conference. Introducing the technology, he shared that we live in a world where businesses like Netflix, Facebook, Amazon, Twitter, etc. release new features on a regular basis in order to meet the demands of the clients. And with such high demand for rapid deployment, companies have adopted the CICD method in their working style.
Do you know that a Netflix engineer can deploy 1000 times in a day? In the duration that we talk about Netflix, an Amazon engineer could have deployed a bill. And guess what? They can deploy at a speed of 11.7 seconds a day. Can you believe the speed?
If these companies conducted this process manually, they would have taken at least 400 times more time as compared to the CICD implementation approach. Based on the same concept, our CICD team created a demo framework called InfoBot. The framework is capable of implementing CICD as well as automating the defect reporting process.
CICD and InfoBot
Shobhit showcased the live demonstration of InboBeans inhour built CICD framework – InfoBot. The purpose of InfoBot is to allow clients to automate their end-to-end functional flow. It’ll allow them to trigger Jenkins jobs through voice commands and provide complete automation. This will include jobs automation, report sharing with stakeholders via email/Slack, validation of application functionalities, defect discovery through automation, automatic defect assignment, raising alarm for blockers issues via voice calls, SMS and external alarm (hooter).
Before diving in the process of how InfoBot operates on CICD, let’s have a look at the tools and technologies used in building the whole framework.
Tools and Technologies Used:
- Selenium (Automation)
- Splunk (Server Log Management)
- SonarQube (Quality Code Gateway)
- Docker (Continuous Deployment)
- TestRail (Test Management)
- Solenoid (Superior Version of Selenium grid)
- Java and Python (Scripting and App Development)
- Jira and Slack (Reporting)
The process of writing code, testing it and refining it is a regular part of any application development. However, with increasing data and processes in the application, it becomes highly important to automate the process so as to avoid any issues in the implementation stage. The CICD approach allows organizations to accelerate their progress by automating the processes involved in the process.
How Does InfoBot Work?
Our CICD team presented the live demo of the InfoBot framework at the conference and showcased how it can reduce the time while automating tasks for the DevOps team. Here’s a step-by-step detail about the working of InfoBot.
Step 1: Initiation
Once the final code is committed by the developer, it gets checked through unit testing and gets ready for merging. Similarly, other developers commit codes from remote locations while following the same process. After merging these codes, the Continuous Integration module (Jenkins) runs a scan for quality check. In order to do this, it goes through multiple layers of scan for the following:
- Coding Standards (coding issues)
- Code Coverage
- Duplicate Codes
- Deep Code Analysis (minor bugs)
- Security Vulnerabilities
Once done, it detects that the code has been checked and the build is ready for deployment. The next step is automated by the CI through the use of SonarQube (quality code gateway) and once this is completed, the package will be ready to be deployed on the cloud through Docker. In order to do this, it will download the base image and take the copy of package from SonarQube while creating the container and deploying the app further.
Step 2: Testing
By this time, the package is ready and the app is launched. Continuing the process further, Jenkins detects the new build and automatically sets up a system testing environment.
Selenoid is used to create this environment on Docker where multiple browsers (nodes) run in parallel. Once the environment is created, it triggers the system testing under automation test suite. Pair and hub node configuration is used for multiple browsers (Chrome, Mozilla) and mobile testing (iOS and Android apps) is initiated.
Step 3: Reporting
InfoBot automatically detects continuous automation through Selenium or other scripting. After completion of the testing stage, it’ll launch the system test results on Allure (dashboard that shows detailed information about test results). It’ll go to the defect management system such as Jira and add all the information and the logs from the backend (server logs from Splunk), logs according to timestamps, etc. It’ll also attach the screenshot for the developers to reproduce the defect.
The allure reports can be rolled out and InfoBot will automatically open the defects as well. This dashboard can be viewed by all the decision makers, stakeholders, customers, etc. As soon as the defect is logged, all the stakeholders are notified by call, WhatsApp, emails automatically. From the time the code is committed to the stage where defects are found, everything is done automatically by InfoBot. As soon as defects are detected and displayed, developers can take action by addressing issues by writing new codes or fixing existing.
The real-time demo of InfoBot shared by our team was executed in merely 2 minutes 30 seconds. If the same process were to be executed manually, it would have taken at least 2-3 days. CICD has brought speed and convenience together for organizations which allows them to release new features rapidly and deploy codes in a matter of minutes thus saving time and increasing efficiency.