I use Jenkins quite a lot. Almost for everything in my daily work.
Not to mention CI/CD part. I achieve regular deployment from Jenkins. Daily backup and weekly cleanup from Jenkins. Vulnerability scan from Jenkins. Workflow enforcement from Jenkins. And the list goes on and on.
But just several years ago, Jenkins (Hudson, the old name) wasn’t this popular. And now? It is almost everywhere. Jenkins is just so important! So answer me: Why is that?
I think there are 5 reasons drive the changes. Check it out and share your thoughts with me, my friends!
(PS: check the bottom of the post: Top #10 Jenkins Plugins I’m actively using everyday).
Check More Discussion In LinkedIn Discussion
1. Lower 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. (Add comments if you have other opinions).
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” VS “Organized Jenkins jobs”. It’s not a hard decision for you, right?
2. Pipeline Integrates Individual Jobs For A Bigger Purpose.
Imagine each individual jenkins jobs are small tools. They all serve simple and small purposes only.
With Jenkins pipeline plugin[1], we can combine multiple jobs together, then serve a bigger purpose. The combination could be either sequentially or parallelly.
As a linux veteran, you know the value of pipeline, don’t you? It makes a huge difference.
- Sequential
stage('Stage1') { build job: 'job1', parameters: [string(name: 'para1', value: 'value1')] build job: 'job2', parameters: [string(name: 'para1', value: 'value2')] } stage('Stage2') { build job: 'job3', parameters: [string(name: 'para1', value: 'value3')] build job: 'job4', parameters: [string(name: 'para1', value: 'value4')] }
- Parallel
stage('stage1') { parallel firstBranch: { // do something build 'job1' }, secondBranch: { // do something else build 'job2' }, failFast: false }
3. Keep 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[2], people can be notified: what activities have been triggered, on when, by who and the results.
The most beautiful part is no extra human effort is required. Everything is done automatically.
Related Reading:
- Avoid Unnecessary Communication Of TOI
- Get Slack Notifications For New Active Sprint
- Get Slack Notifications For System Upgrade
4. Audit The Previous Run Is Possible And Effortless.
When Jenkins run jobs, it will capture console output. For both stdout and stderr.
- For trouble shooting, we know the history crystal clear. No need to human to capture the console output, and spend time organizing them in a user-friendly way. Thinking the time saving for communication, it’s huge!
- For performance tunning, we know how long each run took. Even for each individual job run, we can easily identity the slowest steps with the help of Timestamper plugin[3].
Related Reading:
5. Project Management Now Has More Accurate Data Support.
For project management, we know better about the status for each part. And this could 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.
And Jenkins support REST API or SDK to poll these metrics. Project management now can have a more solid and accurate data support.
Dashboard View plugin[4] can be your friends for this.
Here Are Top #10 Jenkins Plugins I Use Everyday.
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].
Are there any drawbacks with Jenkins? Yes, I do observe some.
Leave me comments, if you’re interested. Or you have something to discuss with me. Thanks!
More Reading:
- Run TCP port check by Jenkins
- Demo Jenkins: How I Enforce CI/CD
- Automatically Track All Change History
- Monitor Outbound Traffic In Deployment
[1] wiki.jenkins-ci.org/display/JENKINS/Pipeline+Plugin
[2] wiki.jenkins.io/display/JENKINS/Slack+Plugin
[3] wiki.jenkins-ci.org/display/JENKINS/Timestamper
[4] wiki.jenkins-ci.org/display/JENKINS/Dashboard+View
[5] wiki.jenkins.io/display/JENKINS/thinBackup
[6] https://goo.gl/2EZtD8
[7] wiki.jenkins-ci.org/display/JENKINS/Naginator+Plugin
[8] wiki.jenkins-ci.org/display/JENKINS/Build-timeout+Plugin
[9] wiki.jenkins-ci.org/display/JENKINS/Git+Plugin
[10] https://goo.gl/vsJKfu
Blog URL: https://www.dennyzhang.com/jenkins_benefits