why a developer writes

Effective Jenkins Plugins (1)

| Comments

(Update 2018-05-13: Here is a translation of this post in Hindi, provided by Nikol @ DealsDaddy.)

Jenkins, originally founded in 2006 as “Hudson”, is one of the leading automation applications which support building, deploying and automating software projects. One great advantage of Jenkins is there are hundreds of plugins available which enable various kinds of extended features needed in the Continous Integration and Continuous Delivery process. As I just checked on the Jenkins Plugins page, there are 873 plugins that fall into five categories: Platforms, User interface, Administration, Source code management and Build management.

Effectively using Jenkins plugins makes your experience with Jenkins more productive. I’m going to occasionally write about Jenkins plugins that I used or learned about. The first post will start from some of the plugins I used when I worked on building a Continuous Delivery system last year (from 2015 to 2016).

Job Configuration History

JobConfigHistory Plugin

This plugin saves every change made to a job. It allows you to see the history of job configurations, compare configuration differences, and restore a particular version of config. You can also see which user makes a particular change if you configured a security policy.

The configuration changes are saved by means of saving copies of the configuration file of a job (config.xml in Jenkins Home directory).

Dependency Graph View

Dependency Graph View Plugin

This plugin visualize dependencies of multiple jobs by generating graphs via graphviz. You can choose to show the dependency of jobs in a view. To generate the graph, it is required to have graphviz installed on the Jenkins server.

This plugin is very useful when you have many jobs which have dependency relationship. Visualizing the dependency helps you easily find possible mistakes in the setting of dependencies.

Build Timeout

Build-timeout Plugin

This plugin allows you to set runtime limit of jobs, and automatically abort a build if it’s taking longer than expected time. In my experience, this plugin was extremely useful as it solved the problem that some builds got stuck and didn’t release the Jenkins slave slots.

Noted this plugin isn’t applicable to pipelines.


P4 Plugin

This plugin manages Perforce workspaces, synchronising code and polling/triggering builds. It also supports a few common Perforce operations such as credential authentication, changelists browsing, and labeling builds.


JIRA Plugin

This plugin integrates JIRA to Jenkins. It uses JIRA REST API, and allows you to display Jenkins builds inside JIRA.

Parameterized Trigger

Parameterized Trigger Plugin

This plugin lets you trigger new builds with various ways of specifying parameters for the new builds. The parameters could be a set of predefined properties, or based on information/results of the upstream builds.

As an example, you can tell a build job where to find packages it needs to install.

Log Parser

Log Parser Plugin

This plugin parses the console log generated by the Jenkins build. It could highlight lines of interest in log, like the lines with errors, warnings, information. It divides a log into sections, such as errors section, warnings section, etc. The number of errors or warnings are also displayed. Useful for triaging errors in long build logs.

Email Extension

Email Extension Plugin

This plugin extends the email notification functionality that Jenkins provides. You can customize when an email is sent, who should receive it, and the content of the email.

Disk Usage

Disk-Usage Plugin

This plugin calculates disk usage of projects and builds, and shows the disk usage information on a page. It also displays a trend chart of display usage. It makes Jenkins job and workspace maintenance easier.


ThinBackup Plugin

This plugin backs up the global and job specific configurations. You can see the backup history, and choose to restore a particular backup. The backup provides setting options for the backup schedule, backup directory, maximum number of backup sets, etc.

Scriptler/Managed Scripts

Scriptler Plugin

This plugin allows you to edit, store, and resue groovy scripts, and execute the script on any of the slaves or nodes. But since 2016 the distribution of this plugin has been suspended due to security issues. The current version of this plugin may not be safe to use.

An alternative choice is the Managed Scripts Plugin.