To make it easier to detect issues in your Jenkins configuration that will cause Jenkins to blow up when you attempt to run those jobs.

To encourage discussion within the Jenkins community on the more subjective stuff. Having a set of checks to base discussion on helps drive out what we as a community think is good style.

Summary

Jenkins is an awesome Automation System, and there are a bunch of people using it in different ways, for example: developers, testers, automation, build engineers, release engineers, scrum master, product owner and so on. Unfortunately, as the number of jobs grows, maintaining them becomes tedious, and the paradigm of no using a predefined set of best practices falls apart.

The Jenkins Lint plugin attempts to solve this problem by allowing jobs to be evaluated with some predefined best practices. The goal is for your team to be able to define those best practices to be related to their project.

Manually reviewing those jobs wouldn't be too hard, but doing the same thing all over again for every new job or for a hundred other projects is where it gets difficult and tedious. This provides a much more powerful way of analyzing them.

Usage

You can find it under <jenkins_url>/jenkinslint or reach it via links in the sidepanel of the main page. You don't need to do anything else, just click on the Jenkins Lint link and those Lint checkers will be shown.

Features

List of available Job checks:

Artifact Publisher check

CleanUp Workspace check

Git Shallow clone check

Javadoc Publisher check

Job Assigned Label check

Master Assigned Label check

Job Description check

Job Log Rotator check

Job Name check

Maven Job Type check

Null SCM check

Polling SCM Trigger check

Multibranch Job Type check

Hard-coded Script check

Gradle Wrapper check

Built Timeout check

Git Ref repo check

Groovy system exit check

TimerTrigger Hash check

Git Ref Submodule repo check

BFA check

List of available Slave checks:

Slave description check

Slave label check

Slave version check

Windows slave launch check

Planned upcoming features

Show graphs.

Configure Checks (change severity)

Load checks dynamically via Jenkins.

Load checks dynamically via Reflection.

Define some kind of programmatically scripts.

Check: Cyclomatic complexity check

Control comments:

You can ignore a particular check by adding a trailing lint:ignore:<check name> comment to the job description.