Jenkins and its Use-cases

Samriddhi Mishra
5 min readMay 25, 2021

It's all about automation these days. When we talk about DevOps tools, a CI/CD system is the first thing that comes to mind. Let’s first find the answer to the genuine question-

What is Jenkins?

Jenkins is an open-source Continuous Integration server written in Java for orchestrating a chain of actions to achieve the Continuous Integration process of majority tools in an automated fashion. Jenkins supports the complete development life cycle of software from building, testing, documenting the software, deploying, and other stages of the software development life cycle.

Monitoring repeated tasks during the development of a project is an exhaustive and time taking task. Jenkins provides the best solution by easily integrating various tools used for software development. For example, if your team is developing a project, Jenkins will continuously test your project builds and show you the errors in the early stages of your development.

What is Continuous Integration?

Multiple developers from different teams of a project keep changing the code of the project continuously. The software is tested immediately after a code commit. With each code commit, code is built and tested. If the test is passed, the build is tested for deployment. This whole process of integrating code after the commit, building, testing, documenting, is called Continuous Integration.

What is Continuous Delivery?

If the testing is done, code is deployed it is finally tested for quality by different types, testing teams. If successfully deployed and approved then the code is pushed to production for clients to see. This process of continuous testing, deployment, approval is called Continuous Delivery.

How does Jenkins work?

Jenkins is a server-based application and requires a web server like Apache Tomcat to run on various platforms like Windows, Linux, macOS, Unix, etc. Jenkins Continuous Integration Pipeline is a powerful instrument that consists of a set of tools designed to host, monitor, compile and test code, or code changes, like:

  • Continuous Integration Server (Jenkins, Bamboo, CruiseControl, TeamCity, and others)
  • Source Control Tool (e.g., CVS, SVN, GIT, Mercurial, Perforce, ClearCase and others)
  • Build tool (Make, ANT, Maven, Ivy, Gradle, and others)
  • Automation testing framework (Selenium, Appium, TestComplete, UFT, and others)

Jenkins Plugins

By default, Jenkins comes with a limited set of features. If you want to integrate Jenkins with different tools like version control-Git, Clouds-AWS, Azure, GCP, build tools- Maven, notifiers- Slack, E-mail, etc, then we need to install plugins for each tool which will install all the functionalities available for that tool.

Case Study of Preply

“In our company, we are trying to use an ‘Everything as a Code’ paradigm which is about having reproducible infrastructure, monitoring, jobs, credentials, jobs, and many other things in code,” Amet said. “Using Jenkins allows us to configure fully reproducible code and fuel a completely automated CI/CD process for all projects inside our company.”

Preply’s technology team is continuously creating new product features and experiments for rapid product A/B testing, so speed-to-market is critical. Preply’s team implemented this in combination with CloudFront to allow paths and token validation. With those steps, Amet said they had a ready-made infrastructure with AMI, giving them opportunities to monitor and access credentials within their corporate Vault. But to automate reproducible configurations, they had to tackle the ongoing requirement to update specific Jenkins plugins. For that, they chose to pin versions — using a declarative format — of those plugins by leveraging Docker.

Customizing plugins to provide pipeline visibility and eliminate manual intervention

Another ‘must-have’ plugin for Preply was one that allowed them to store configurations in a human-readable text format. “In addition to text interpretation, the Jenkins Configuration as Code (JCasC) plugin also gives us the ability to describe security configurations, credentials, plugin settings, nodes, views, and many other things vital to our business”
“The plugins allow us to configure jobs in a human-readable text format (YAML or JSON). And it’s really comfortable to manage jobs with SCM,” Amet said. “Basically, we can set up a CI/CD process for our CI/CD tool using JJB. That’s made our development easier. Every engineer can make changes in any pipeline through the Pull Request. No manual changes, only code!”

Reaping the rewards of a new CI/CD platform

More importantly, with a few code changes and by enhancing the plugin architecture of their existing Jenkins instance, Preply’s DevOps team was able to fully automate their CI/CD process for all projects.

“Our time to deployment has decreased drastically: we’ve managed to increase our software release rate up to 40 per day, as opposed to just one per day before we automated our processes,” Amet said. “This has helped us to increase the rate at which we develop and launch the product experiments.”

By eliminating manual processes with Jenkins, development became easier and freed this global online education company to focus on innovative services for both their students and tutors around the globe.

--

--