5 Reasons Jenkins Is So Useful and Popular

DZone 's Guide to

5 Reasons Jenkins Is So Useful and Popular

Jenkins is arguably the most popular CI tool out there today. So what makes it so useful and popular? We take a look at these questions in this article.

· DevOps Zone ·
Free Resource

I use Jenkins quite a lot, for almost everything in my daily work. Not to mention the CI/CD part. I achieve regular deployment with Jenkins. Daily backup and weekly cleanup from Jenkins. Vulnerability scanning from Jenkins. Workflow enforcement with Jenkins. And the list goes on and on.

But just several years ago, Jenkins (as Hudson, its old name) wasn’t that well-known. And now? It is almost everywhere. Jenkins is just so important! So answer me: Why is that?

I think there are five reasons driving the change. Check it out and share your thoughts with me, my friends!

1. Lowers the Effort of Converting CLI to GUI

Everybody loves one-button click philosophy, both users and engineers. The truth is, lots of system admins prefer CLI. So why? Is it because all of the IT professionals are nerds and jerks? Well, maybe...

Implementing reliable scripts takes time, but adding decent UI support takes even longer.

Now, with Jenkins, visual ops is much easier to achieve. To convert a CLI into a GUI button click, just wrap up the script as a Jenkins job. To support customization and obtain users’ input? Create parameterized Jenkins jobs.

Tons of undocumented scripts versus organized Jenkins jobs. It’s not a hard decision for you, right?

2. The Pipeline Integrates Individual Jobs for a Bigger Purpose

Imagine that individual Jenkins jobs are small tools. They all serve simple and small purposes. With the Jenkins pipeline plugin, we can combine multiple jobs together, which then serve a bigger problem. The combination could be either sequential or parallel.

As a Linux veteran, you know the value of pipelines, don’t you? It makes a huge difference.

3. Keeps People in Sync, Especially in Slack

Nowadays, teams tend to use one centralized platform for communication. Slack is the most popular one. Let’s say all critical activities are implemented and triggered from Jenkins. Adding Slack integration to Jenkins, people can be notified of what activities have been triggered, when, by who, and the results.

The most beautiful part is: no extra human effort is required. Everything is done automatically.

4. Auditing the Previous Run Is Possible and Effortless

When Jenkins runs jobs, it will capture console output, for both stdout and stderr.

For troubleshooting, we know the history, crystal clear. No need for a human to capture the console output and spend time organizing it in a user-friendly way. The time saved for communication is huge!

For performance tuning, we know how long each run took. Even for each individual job run, we can easily identify the slowest steps with the help of the Timestamper plugin.

5. Project Management Now Has More Accurate Data Support

For project management, we know more about the status for each part, and this can be done automatically. Each activity can be wrapped as a Jenkins job. For each Jenkins job, we know whether it succeeds or fails, and we also know how long it takes.

Plus, Jenkins supports REST API or SDK to poll these metrics. Project management can now have more solid and accurate data support. The Dashboard View plugin can be your friend for this.

Here is a summary of useful Jenkins plugins:

Pipeline Plugin[1], Slack Plugin[2], Timestamper[3], Dashboard View[4], thinBackup[5], JobConfigHistory Plugin[6], Naginator Plugin[7], Build-timeout[8], Git Plugin[9], and GitHub pull request builder plugin[10].

Image title

Are there any drawbacks with Jenkins? Yes, I have observed some. Leave me comments if you’re interested, or if you have something to discuss with me. Thanks!

ci/cd, continuous integration, devops, jenkins

Published at DZone with permission of Denny Zhang , DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}