Industry Use-Cases of Jenkins
Jenkins is an open-source server that is written entirely in Java. It lets you execute a series of actions to achieve the continuous integration process, that too in an automated fashion.
Jenkins automates the software builds in a continuous manner and lets the developers know about the errors at an early stage. A strong Jenkins community is one of the prime reasons for its popularity. Jenkins is not only extensible but also has a thriving plugin ecosystem.
Some of the possible steps that can be performed using Jenkins are:
- Software build using build systems such as Gradle, Maven, and more.
- Automation testing using test frameworks such as Nose2, PyTest, Robot, Selenium, and more.
- Execute test scripts (using Windows terminal, Linux shell, etc.
- Achieve test results and perform post actions such as printing test reports, and more.
- Execute test scenarios against different input combinations for obtaining improved test coverage.
- Continuous Integration (CI) where the artifacts are automatically created and tested. This aids in identification of issues in the product at an early stage of development.
Architecture of Jenkins
Before we dive into how does Jenkins work, we must understand the architecture of Jenkins. These are the series of steps that outlines the interaction between different elements in Jenkins:
- Developers do the necessary modifications in the source code and commit the changes to the repository. A new version of that file will be created in the version control system that is used for maintaining the repository of source code.
- The repository is continuously checked by Jenkins CI server for any changes (either in the form of code or libraries) and changes are pulled by the server.
- In the next step, we ensure that the build with the ‘pulled changes’ is going through or not. The Build server performs a build with the code and an executable is generated if the build process is successful. In case of a build failure, an automated email with a link to build logs and other build artifacts is sent to the developer.
- In case of a successful build, the built application (or executable) is deployed to the test server. This step helps in realizing continuous testing where the newly built executable goes through a series of automated tests. Developers are alerted in case the changes have caused any breakage in functionality.
- If there are no build, integration, and testing issues with the checked-in code, the changes and tested application are automatically deployed to the Prod/Production server.
Here is the diagrammatic representation of the Jenkins architecture:
A single Jenkins server might not be sufficient to realize the following requirements:
- Testing needs to be performed on different environments (i.e. code written using different languages e.g. Java, Python, C, etc. are committed to the version control system), where a single server might not suffice the requirement.
- A single Jenkins server might not be sufficient to handle the load that comes with large-scale software projects.
In such scenarios, the distributed (or Master-Agent) architecture of Jenkins is used for continuous integration and testing.
“Avoris Travel” — A Case Study on Jenkins
Speed matters when your mission is to reinvent the travel business: for your agents, your customers, and, especially, your technology team. That’s the case for Ávoris Travel, part of Barceló Group, which boasts an extensive network of almost 675 travel agencies across Spain and Portugal. The company provides unique brand holidays, leisure and business travel and offers reviews and advice on hotels, flight deals and tickets, cruise deals, and rental car services to more than 1.5 million international travelers.
With distinguished destination travel brands like LeSki, Le Musik, and a selection of author travels under its “Viagens Com Assinatura” signature travel concept, a proprietary database is the ticket to securing inventive travel opportunities. From their corporate travel agency, BCD Travel, which supports more than 4,000 clients to their Rhodasol & BedToYou brand which features a bank of hotel beds open to all agencies with more than 100,000 establishments, a smart dynamic booking engine is essential.
And all of these brands (plus more!) are powered by a nimble, progressive technology team. Not only do their developers and engineers need to support all of the various front-end applications relied on by their agents, their backend services need to maintain and enhance an unparalleled search database to power this innovative operation. Unique to Avoris is a discreet machining technology which enables agents to enter specific criteria to search and find all types of trips and travel opportunities across the entire network.
Because of this, the technologists at Avoris need to constantly innovate to support Avoris global brands, agents, and more. To power accelerated development activities, all of those divisions are supported by a CI/CD platform built on Jenkins.
“Our infrastructure is very important because we have to be online to meet customer demand anywhere in the world,” said Alejandro Alvarez Vazquez, Sysadmin, Avoris Travel. “Our CI/CD platform is used by 200 people. The services that we build and deploy are used by thousands of potential clients and by our network of 675 own agencies located in Spain and Portugal.”
As noted, Avoris engineers have created their own search and booking engines fueled by a proprietary business rules engine. As their developers innovate these technologies, having a solid CI/CD that lets them work at an accelerated pace is critical.
“Our developers are grouped in numerous small teams. Because most of our software is based on a microservices architecture, new deployments are made to the production environment every week,” Alejandro continued. “Thanks to Jenkins we are making these deployments much easier but not more often. The frequency is the same but as in the past but now it is much less problematic and simple.”
“With a focus on building cutting edge technology services, we turned to Jenkins because it is easily customizable and scales with our evolving needs,” Alejandro said. “Internal applications and transversal services developed by the architecture team to support common functionalities to the rest of the applications: logging, cache, app configuration, apis, etc. All of which are supported by their evolving platform.
Process improvement is top of mind for the ops team at Avoris. And Alejandro shared his story for one critical instance where the use of Jenkins made a big difference. They realized their build times were on the decline, so they sought to minimize their delivery cycle times with Jenkins. The results? The team was able to speed up their CI/CD with shared volumes and more. And they were able to reduce build times more than 50%.
“This specific project was successful due to the vast number of Jenkins plugins available, the extensibility of Jenkinsfiles with the use of Groovy, and many integration possibilities,” Alejandro explained. “Additionally, we relied on a large and helpful Jenkins community and all the Jenkins resources available to us.”
The tech team is also diligent about monitoring performance: “We have a comparison of build times after making major improvements to our Jenkins Pipelines CI/CDs,” Alejandro notes. “By using openshift 4 low compute nodes and shared container storage after migration from Docker to Buildah, a more than remarkable reduction in construction times has been achieved.”
The reductions times included: an improvement from 45 seconds to just 8 seconds for small applications, shaving larger legacy apps by 7–8 minutes, and reducing final image generation time by 10–30 seconds
Simply put, Alejandro said: “Jenkins enables us to do things simply, quickly and in a powerful way.”
The team will continue to enhance their platform with ease because Jenkins offers a” huge number of integration possibilities,” which enables them to make adjustments on the fly. And this team will continue to reinvent their technology — with the help of Jenkins — to support Avoris’ mission to reinvent the travel industry.
Jenkins is an excellent CI/CD tool that has excellent functionalities and the best part is that it is free to use. Based on what we discussed in this what is Jenkins blog, we can conclude that Jenkins has features that boost release agility by providing CI services.
Thanks for reading :)