Jenkins is a very popular Continuous Integration server. Easy to install, easy to configure, easy to just use to build and test your project (if you have not used it before it is worth checking out for sure). However, whilst your project and company grow and/or you get more projects to maintain, its core features are not sufficient. Fortunately, a bunch of plugins can help. Installation and updates are automatic and simple. For a complete list of plugins, checkout the official page. There are more than a thousand available. It is easy to just lose your mind whilst digging through them.
Below you can find the list of plugins that I have found the most useful. Some of them are must have, some just nice to have. It is a good place to start and explore all the rich Jenkins possibilities.
- Job configuration History plugin – “saves a backup of the configuration file of a job and of the system configuration for every change made. You can also see what changes have been made by which user if you configured a security policy”. Total must be – allows you to see what exact changes has been done to the configuration, by who, and revert them with just one click!
- Scriptler – “allows you to store/edit groovy scripts and execute them on any of the slaves/nodes or master”. You can execute any groovy code in Jenkins context. Thanks to the plugin you can store scripts, share them with other users and use them easily within builds. You can perform many Jenkins customized actions almost on the fly.
- Build Failure Analyzer – “This plugin analyzes the causes of failed builds and presents the causes on the build page. It does this by using a knowledge base of build failure causes that is built from scratch”. Very useful. After you have created a sufficient knowledge base (which is simply a mapping from build log pattern to a problem name) you are able to see reasons for particular build failures within a job page and history. Additionally, you can move to the problematic build log line with one click.
- Nested view plugin – “View type to allow grouping job views into multiple levels instead of one big list of tabs”. Definitely a must be if you are maintaining hundreds of jobs.
- Build-timeout plugin – “This plugin allows you to automatically abort a build if it’s taking too long. Once the timeout is reached, Jenkins behaves as if an invisible hand has clicked the abort build button.” Assures that one unfortunate developer change will not block a slave until someone notices the problem.
- Matrix Authorization strategy plugin – pre-installed with current version. Allows you to assign custom permissions to specific users, both globally and per job. Check out the below screen:
Nice to have
- Active Directory Plugin – “With this plugin, you can configure Jenkins to authenticate the username and the password through Active Directory.” No need to maintain the users list separately.
- LDAP Plugin – pre-installed with current version. “Security realm based on LDAP authentication.” If you would like to use LDAP authentication of course.
- Conditional build step plugin – “A buildstep wrapping any number of other buildsteps, controlling their execution based on a defined condition.” Instead of putting complicated logic inside one build step, you can create clear and transparent configuration. You can also conditionally trigger other builds.
- Email-ext plugin – “This plugin allows you to configure every aspect of email notifications. You can customize when an email is sent, who should receive it, and what the email says.” Very flexible configuration. If you want to craft your Jenkins notification into a masterpiece and make sure the recipients do not ignore messages, you should check it out for sure.
- HTML Publisher plugin – “Html Publisher plugin is useful to publish the html reports that your build generates to the job and build pages.” One of its core features is that HTML reports are persisted per build. As long as you do not delete job history, you will have access to all published reports.
- Multi-slave config plugin – “This plugin allows administrators to configure, add and delete several dumb slaves at the same time.” If you maintain Jenkins with dozens of nodes, it is a must have. By allowing to perform operations on several nodes at the same time saves a lot of time.
- Multiple SCMs plugin – “Allows a job to check out sources from multiple SCM providers.” Not fully stable, but very useful. In many complicated environments checking out a few projects into one workspace might simplify the configuration and building process.
- Naginator plugin – “This plugin allows you to automatically reschedule a build after a build failure.” If your build depends on any external resources (it does for sure: DB, network, repository, etc) you can find it useful to not have to wait until a new change is coming to build. You can of course configure your job to build periodically but then you lose all the advantages of pool scm trigger.
- TextFinder plugin – “This plugin lets you search keywords in the files you specified and uses that to downgrade a successful build to be unstable or a failure.” If you encounter situations when your tools are not using exit code properly and you are not able to change it, you can workaround it with this plugin.
- View Job Filters – “Create smart views with exactly the jobs you want. Your smart views can automatically include or exclude jobs by using things like the SCM path or type, the job type, build statuses or trends or triggers, relevance to the logged-in user, email recipients, Maven configuration, job parameterization, and user permissions. Mix and match filters to narrow down to exactly what you want.” Self explanatory.
- Cluster Statistics plugin – “This plugin will measure the time in queue, time in build and show these statistics per node.” Simple and easy to use statistics to check your Jenkins overall and per node load.
- Parameterized Trigger plugin – “This plugin lets you trigger new builds when your build has completed, with various ways of specifying parameters for the new build. You can add multiple configurations: each has a list of projects to trigger, a condition for when to trigger them (based on the result of the current build), and a parameters section.” Nice to create simple build pipelines.
- Workflow plugin – this plugin deserves a separate post which will come soon. I will just advocate it a little by copying its introductory sentences: “Building continuous delivery pipelines and similarly complex tasks in Jenkins using freestyle projects and traditional plugins can be awkward. You need to mix Parameterized Trigger, Copy Artifact, Promoted Builds, Conditional Build Step, and more just to express what should be a simple script. The Workflow plugin suite attempts to make it possible to directly write that script, what people often call a workflow (sometimes abbreviated flow), while integrating with Jenkins features like slaves and publishers.” The idea is to define complex job pipelines/workflow in single Groovy script using embedded DSL.
19 plugins. Most of them useful in any Jenkins instance, without some I cannot imagine maintaining huge Jenkins servers. Try them yourself and evaluate the possibilities. I encourage you to spend half an hour per week to search for what plugins are available and how they can improve productivity of all people using Jenkins within your company. You will soon figure out that this will pay off.