Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Reverted from v. 31
Wiki Markup
{jenkins-plugin-info:pluginId=jenkinslint}{

Excerpt

...

Detects

...

whether

...

your

...

Jenkins

...

configuration

...

follows

...

those

...

best

...

practices 

...

This

...

plugin

...

has

...

mainly

...

two

...

goals:

...

  • 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.

...


Table of Contents
maxLevel1
excludePlugin Information
printablefalse

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.


Image Added

Image Added
Image Added

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

List of available Slave checks:

  • Slave description check
  • Slave label check
  • Slave version check
  • Windows slave launch check

Planned upcoming features

  • Load checks dynamically via Reflection.
  • Show graphs.
  • Configure Checks (enabled, disabled, change severity)
  • Load checks dynamically via Jenkins.
  • Jobs action to show those jenkins lints.
  • Define some kind of programmatically scripts.
  • Rest API 
  • Git Submodule ref repo check
  • BFA check
  • Remove plugin dependency
  • Cyclomatic complexity check

Control comments:

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

Workaround

Warning

There is already a known issue in the initial version 0.1.0Workspace Cleanup Plugin is a required dependency otherwise JenkinsLint will fail when analyzing those Jobs

Code Block
titleConsole Output
Jul 13, 2015 10:21:06 PM hudson.ExpressionFactory2$JexlExpression evaluate
WARNING: Caught exception evaluating: it.data in /jenkinslint/. Reason: java.lang.reflect.InvocationTargetException
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)

.... Giant Stacktrack ....

        at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoClassDefFoundError: hudson/plugins/ws_cleanup/WsCleanup$DescriptorImpl
        at org.jenkins.ci.plugins.jenkinslint.check.CleanupWorkspaceChecker.executeCheck(CleanupWorkspaceChecker.java:22
)
        at org.jenkins.ci.plugins.jenkinslint.JenkinsLintAction.getData(JenkinsLintAction.java:60)
        ... 112 more

There

...

are

...

two

...

workarounds:

...

  1. Installing  Workspace Cleanup Plugin 
  2. Upgrading the JenkinsLint version

Requirements

Jenkins

Jenkins version 1.554.1

...

or

...

newer

...

is

...

required.

...

Open

...

Issues

...

Jira Issues
renderModedynamic
width850px
anonymoustrue
urlhttp://issues.jenkins-ci.org/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=

...

project+%3D+JENKINS+AND+status+in+%28Open%2C+%22In+Progress%22%2C+Reopened%29+AND+component+%3D+jenkinslint-plugin+ORDER+BY+updated+DESC%2C+priority+DESC%2C+created+ASC
height300px
 

Version history

Version 0.8.0 (Upcoming release)

  • (info)  RestAPI.
  • (info)  BFA check.

Version 0.7.0 (Feb 26, 2017)

  • (warning)  Maven and Matrix projects weren't supported when linting some defects  (issue #42310)
  • (info)  i18 support

Version 0.6.0 (Feb 12, 2017)

Version 0.5.0 (Oct 1, 2015)

Version 0.4.0 (Aug 27, 2015)

  • (info)   Support Jenkins lint check for Jenkins Slaves (issue #30161)

Version 0.3.0 (Jul 29, 2015)

Version 0.2.0 (Jul 21, 2015)

Version 0.1.2 (Jul

...

15,

...

2015)

...

  • (error)  Some builders

...

  • cannot

...

  • be

...

  • cast

...

  • to

...

  • hudson.tasks.CommandInterpreter

...

...

...

  • (info)  HardcodedScript Check

...

  • supports

...

...

...

  • (info)  Create unit

...

  • test

...

  • suite

...

  • for UI

Version 0.1.1 (Jul

...

14,

...

2015)

...

  • (error)   Project

...

  • dependency

...

  • with

...

  • ws-cleanup

...

...

...

  • New Check: Hardcoded

...

  • Script check

Version 0.1.0 (Jul

...

12,

...

2015)

...

  • (info)   Initial release