Back to blog

A beautiful Jenkins dashboard

Julian Kleinhans
January 10, 2016
This is a guest post by Julian Kleinhans, Software Architect at AOE, who is outlining some of the Jenkins dashboard work he’s done with dashing-js

Jenkins offers a handful of third party dashboards, but none of them are really beautiful and flexible enough from my point of view. For example, I could not find a solution which gives me the possibility to easily decide which data should be display in the widget and which not. It also doesn`t have the possibility to add additional widgets to the dashboard which have nothing to do with Jenkins. So I came up with something interesting that includes Jenkins data. But I cannot do that with the existing built-in dashboards from Jenkins plugins which are Jenkins-content specific.

So I decided to write a new, flexible and extensible dashboard. To avoid re-inventing the wheel I also decided to use dashing-js as a basis and not Jenkins itself. dashing-js is a Node.js port of Dashing, a Sinatra-based framework that lets you build beautiful dashboards.

The key features of Dashing are:

  • Use pre-made widgets, or fully create your own with Sass, HTML and CoffeeScript

  • Widgets harness the power of data bindings (via batman.js) to keep things DRY and simple

  • Use the API to push data to your dashboards or make use of a simple Node.js script for fetching data

  • Drag & drop interface for re-arranging your widgets

The advantage over a native Java-based Jenkins plugin is that you don’t need to know Java and the whole Java stack. You can also easily add other pre-made third-party widgets, for example a GitHub Pull Request count widget or an AWS statistic widget or whatever else. In other words, it is completely independent of Jenkins. All you need is Node.js and the permission to access the Jenkins API.

Beside dashing-js you will need my Jenkins Job widget. It is a generic widget for Jenkins jobs which provides a highly visible view of the build status and build progress of selected Jenkins jobs. Via configuration it is possible to add multiple widgets for different Jenkins jobs (as you can see in the screenshot below).

So, all you need is dashing-js, my Jenkins Job widget and some npm packages. The installation and the setup is really easy and can be found here.

Example

Example

About the author

Julian Kleinhans

Julian Kleinhans is working as a Software Architect at AOE GmbH in Krefeld. Beside his passion as a developer, he is also passionate about whiskey. His blog deals with various topics such as web development and whisky tasting.