Code Monkey home page Code Monkey logo

build-monitor-plugin's Introduction

Jenkins CI Build Monitor Plugin

Build Monitor Plugin provides a highly visible view of the status of selected Jenkins jobs.

It easily accommodates different computer screen sizes and is ideal as an Extreme Feedback Device to be displayed on a screen on your office wall. (Inspired by the no longer maintained RadiatorView plugin).

Join the chat at https://gitter.im/jenkins-build-monitor-plugin/Lobby

Have a question? Perhaps it's already been answered - check the FAQ section below.

Features

I'd like to keep the plugin as simple as possible, yet useful and effective.

Current functionality of the Build Monitor plugin:

  • Displays the status and progress of selected jobs. The view is updated automatically every couple of seconds using AJAX, so no "Enable Auto Refresh" needed.
  • Displays the names of people who might be responsible for "breaking the build".
  • Supports the Claim plugin, so that you can see who's fixing a broken build
  • Supports View Job Filters, so that you can easily create Build Monitors for "slow builds", "only failing", etc.
  • Supports Build Failure Analyzer, so that you know not only who, but also what broke the build; learn more
  • Supports CloudBees Folders Plugin, so that you can have project- and team-specific nested Build Monitors; learn more
  • Supports Pipeline Plugin, so that the currently executing stage(s) are shown.
  • The number of columns and size of the font used is easily customisable, making it trivial to accommodate screens of different sizes.
  • UI configuration is stored in a cookie, making it possible to display different number of columns and using different font size on each of the screens at your office.
  • Can work in a colour-blind-friendly mode; learn more

All the previous releases together with their change logs are listed here.

Requirements

To use Build Monitor you'll need:

  • Jenkins CI version 1.642.3 or newer - please note that for production installations I recommend using a Long-Term Support release
  • A modern web browser - to avoid unnecessary complexity when implementing the view layer I decided to use CSS 3 flexbox. The standard is currently supported by most modern web browsers, so if your browser doesn't support this feature - consider upgrading :)

Your feedback matters!

Do you find Build Monitor useful? Give it a star! โ˜…

Found a bug? Raise an issue or submit a pull request (start with this mini-dev guide, it might come in handy).

Have feedback? Let me know on Twitter: @JanMolak

Setting up

To create a new Build Monitor View, click on the "New View" tab, select "Build Monitor View" and select jobs you wish to display on the monitor.

Setting up

Simple, right? :-) You can have as many Build Monitor Views as you want - the most popular approach is to have one per team or one per project.

A picture is worth a thousand words

Adding jobs Three columns view Supports Claim and Build Failure Analyzer plugins Colour-blind mode

Please note that you can change the number of columns and the size of the font using the gear icon in the top right corner.

Roadmap and work in progress

To stay up-to-date with the project news - follow @JanMolak on twitter.

If you'd like to know what's coming next - have a look at the project's kanban board. Here's how the columns work:

  • Ideas - ideas up for discussion. If you'd like to see any of them making it into the Build Monitor project - vote on them or submit a pull request.
  • Backlog - features most wanted by the Build Monitor Community. I'll get them done as soon as I have a spare moment. Feel free to help out! :-)
  • In progress - stuff I'm currently working on and will make it into the next release.
  • Done - done and deployed. Grab the latest version from your Jenkins Update Center or the Releases page.

If you'd like to get hold of the latest and greatest build of the Build Monitor Plugin before it's available in the Jenkins Update Center, you can download the latest incremental build from the Jenkins CI server. If the plugin doesn't appear in your Jenkins Update Center, visit Manage Plugins / Advanced and click the "Check now" button to make Jenkins retrieve the latest update-center.json data.

(A)TDD

If you'd like to understand more about the logic behind the Build Monitor Plugin, have a look at the tests that drove the design.

FAQ

How do I let my teammates know that I'm fixing a broken build?

By claiming it. Build Monitor supports Jenkins Claim Plugin, so once you have it installed, enable "Broken build claiming" in the "Post-build actions" of your Jenkins job. From now on you'll be able to claim any further broken builds and Build Monitor will pick it up.

You might also be interested in a script that enables claiming on all your Jenkins jobs.

How do I know what broke the build?

Wouldn't it be great to know what made your build fail? Well of course it would. Build Monitor supports Jenkins Build Failure Analyzer Plugin so get it, teach it, and Build Monitor will tell you what the Failure Analyzer found out.

I have too many jobs on one screen, what should I do?

You have several options here:

  1. review the granularity of your jobs: If you have too many low-level jobs displayed on one screen, consider consolidating them using Promoted Builds Plugin or MultiJob Plugin
  2. use job filters: Build Monitor supports Jenkins View Job Filters Plugin, if you have it installed
  3. get a bigger screen ...

Red and green colours are lovely, but I'm colour blind ...

There's a colour blind mode you can enable in the Settings

Open Source Software Used

Friends of Build Monitor

Build Monitor is continuously delivered to a Jenkins near you thanks to:

build-monitor-plugin's People

Contributors

basil avatar bkmeneguello avatar chadiem avatar daniel-beck avatar davidparsson avatar dcendents avatar deiga avatar dependabot[bot] avatar eribau avatar erikhakansson avatar gitter-badger avatar hschink avatar jan-molak avatar jean-pierreb avatar jfhumann avatar kamyki avatar malsr avatar matoxp avatar mattjmorrison avatar mawatech avatar michaelneale avatar ndeloof avatar patrickdepinguin avatar rahulsom avatar rantoniuk avatar sosotughushi avatar timja avatar tobix avatar vkotovv avatar waffle-iron avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

build-monitor-plugin's Issues

Show time since last build instead of build time

Hi,
I love this view and are currently using it on a large monitor in our development offices.

For us, the duration of each build is not that important, but I (and my coworkers) would like to monitor the activity on each project. Could it be configurable if the time shown in the right corner should be time elapsed time of build or time since last build?

That would be awesome!

Add developer setup instructions in wiki

I don't do node.js stuff and need a few lines of wiki describing what a random developer needs to set up such that I can execute the build and actually move onto looking at contributing back.

Include Last Build Description

When available, display the last Build Description.
Suggested location: below job name (e.g. above culprits), or next to Build name in the bottom left corner
Suggested font class: same as culprit

Not seeing build on iOS Safari

Hello! Really like this plugin on my Mac's Chrome browser, but when I tried to pull up my monitor on an iPad, I could not see the build I am trying to monitor. It's there on the Jenkins dashboard, but not in your plugin. This could be user error, but I'm at a loss.

Wrong crumb field supplied

I always get the follwoing error for the build monitor:

HTTP ERROR 403

Problem accessing /jenkins/$stapler/bound/6c25fe24-b2b8-4ccb-a07b-8b68317513b3/fetchJobViews. Reason:

    No valid crumb was included in the request


Powered by Jetty://

Analyzing the http-request a bit, I found that it sends the Crumb in the header: 'Crumb'
other components use '.crumb'

Manually changing it gives a successful supply (using curl).

Auto-refresh enabled not compatible

Love the View, but when I enable auto-refresh with release 1.518 and the latest plug-in release, on the first refresh it gives me a 404 failure web page.

I need to have the auto-refresh enabled to keep me logged in (so I don't time out).

unstable builds

Would it be possible to show unstable builds as another color? yellow/orange??

Color for unstable job is red instead orange

Hello Jan,
thanks for the nice plugin.
A slight issue: color of unstable jobs has the color of failed jobs (red) always.
tested with Jenkins ver. 1.567 + Build Monitor View 1.4+build.102
Please fix.
thanks, Stefan

Maven Multi Module Builds

We have a large multi module build using the maven reactor and would really like to be able to see the modules broken down into seperate status bars.

Is possible to track which sub-module is being built as its own status bar from the parent, this would especially be helping in a multi module build as we use threading argmuments to build them. It will also allow use to see the final status of each module as we use "--fail-at-end". Potentially when we do a release, using the mavne-release-plugin we can also see the release status of each artifact.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/2116782-maven-multi-module-builds?utm_campaign=plugin&utm_content=tracker%2F580790&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F580790&utm_medium=issues&utm_source=github).

Support Cloudbees Folders Plugin

We want to start using the Cludbees folders plugin, https://wiki.jenkins-ci.org/display/JENKINS/CloudBees+Folders+Plugin

We use the build monitor plugin extensively, but on our test jenkins server when I installed the folders plugin, only the folders show up and not the jobs within that folder.

I am happy to implement support for folders, and create a pull request, but want to make sure nobody else is already working on it and that it is functionality that is desired in this plugin.

Latest version 1.3 build 70 fails to load

Upgrading from build 68 to 70 did not work. It crashes and provides the following:

Instead of an expected response I received the following, which usually means an internal Jenkins error:

{
"cause": null,
"localizedMessage": "hudson.model.FreeStyleProject cannot be cast to java.lang.Comparable",
"message": "hudson.model.FreeStyleProject cannot be cast to java.lang.Comparable",
"stackTrace": "[{"className": "java.util.ComparableTimSort", "fileName": "ComparableTimSort.java", "lineNumber": 290, "methodName": "countRunAndMakeAscending", "nativeMethod": false}, {"className": "java.util.ComparableTimSort", "fileName": "ComparableTimSort.java", "lineNumber": 157, "methodName": "sort", "nativeMethod": false}, {"className": "java.util.Arrays", "fileName": "Arrays.java", "lineNumber": 537, "methodName": "sort", "nativeMethod": false}, {"className": "java.util.TimSort", "fileName": "TimSort.java", "lineNumber": 178, "methodName": "sort", "nativeMethod": false}, {"className": "java.util.TimSort", "fileName": "TimSort.java", "lineNumber": 173, "methodName": "sort", "nativeMethod": false}, {"className": "java.util.Arrays", "fileName": "Arrays.java", "lineNumber": 659, "methodName": "sort", "nativeMethod": false}, {"className": "java.util.Collections", "fileName": "Collections.java", "lineNumber": 217, "methodName": "sort", "nativeMethod": false}, {"className": "com.smartcodeltd.jenkinsci.plugins.buildmonitor.BuildMonitorView", "fileName": "BuildMonitorView.java", "lineNumber": 150, "methodName": "jobViews", "nativeMethod": false}, {"className": "com.smartcodeltd.jenkinsci.plugins.buildmonitor.BuildMonitorView", "fileName": "BuildMonitorView.java", "lineNumber": 132, "methodName": "fetchJobViews", "nativeMethod": false}, {"className": "sun.reflect.NativeMethodAccessorImpl", "fileName": "NativeMethodAccessorImpl.java", "lineNumber": -2, "methodName": "invoke0", "nativeMethod": true}, {"className": "sun.reflect.NativeMethodAccessorImpl", "fileName": "NativeMethodAccessorImpl.java", "lineNumber": 57, "methodName": "invoke", "nativeMethod": false}, {"className": "sun.reflect.DelegatingMethodAccessorImpl", "fileName": "DelegatingMethodAccessorImpl.java", "lineNumber": 43, "methodName": "invoke", "nativeMethod": false}, {"className": "java.lang.reflect.Method", "fileName": "Method.java", "lineNumber": 606, "methodName": "invoke", "nativeMethod": false}, {"className": "org.kohsuke.stapler.Function$InstanceFunction", "fileName": "Function.java", "lineNumber": 298, "methodName": "invoke", "nativeMethod": false}, {"className": "org.kohsuke.stapler.Function", "fileName": "Function.java", "lineNumber": 161, "methodName": "bindAndInvoke", "nativeMethod": false}, {"className": "org.kohsuke.stapler.Function", "fileName": "Function.java", "lineNumber": 96, "methodName": "bindAndInvokeAndServeResponse", "nativeMethod": false}, {"className": "org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher", "fileName": "MetaClass.java", "lineNumber": 465, "methodName": "doDispatch", "nativeMethod": false}, {"className": "org.kohsuke.stapler.NameBasedDispatcher", "fileName": "NameBasedDispatcher.java", "lineNumber": 53, "methodName": "dispatch", "nativeMethod": false}, {"className": "org.kohsuke.stapler.Stapler", "fileName": "Stapler.java", "lineNumber": 728, "methodName": "tryInvoke", "nativeMethod": false}, {"className": "org.kohsuke.stapler.Stapler", "fileName": "Stapler.java", "lineNumber": 858, "methodName": "invoke", "nativeMethod": false}, {"className": "org.kohsuke.stapler.MetaClass$12", "fileName": "MetaClass.java", "lineNumber": 390, "methodName": "dispatch", "nativeMethod": false}, {"className": "org.kohsuke.stapler.Stapler", "fileName": "Stapler.java", "lineNumber": 728, "methodName": "tryInvoke", "nativeMethod": false}, {"className": "org.kohsuke.stapler.Stapler", "fileName": "Stapler.java", "lineNumber": 858, "methodName": "invoke", "nativeMethod": false}, {"className": "org.kohsuke.stapler.Stapler", "fileName": "Stapler.java", "lineNumber": 795, "methodName": "tryInvoke", "nativeMethod": false}, {"className": "org.kohsuke.stapler.Stapler", "fileName": "Stapler.java", "lineNumber": 858, "methodName": "invoke", "nativeMethod": false}, {"className": "org.kohsuke.stapler.Stapler", "fileName": "Stapler.java", "lineNumber": 631, "methodName": "invoke", "nativeMethod": false}, {"className": "org.kohsuke.stapler.Stapler", "fileName": "Stapler.java", "lineNumber": 186, "methodName": "service", "nativeMethod": false}, {"className": "javax.servlet.http.HttpServlet", "fileName": "HttpServlet.java", "lineNumber": 848, "methodName": "service", "nativeMethod": false}, {"className": "org.eclipse.jetty.servlet.ServletHolder", "fileName": "ServletHolder.java", "lineNumber": 686, "methodName": "handle", "nativeMethod": false}, {"className": "org.eclipse.jetty.servlet.ServletHandler$CachedChain", "fileName": "ServletHandler.java", "lineNumber": 1494, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.util.PluginServletFilter$1", "fileName": "PluginServletFilter.java", "lineNumber": 96, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.plugins.greenballs.GreenBallFilter", "fileName": "GreenBallFilter.java", "lineNumber": 58, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.util.PluginServletFilter$1", "fileName": "PluginServletFilter.java", "lineNumber": 99, "methodName": "doFilter", "nativeMethod": false}, {"className": "net.bull.javamelody.MonitoringFilter", "fileName": "MonitoringFilter.java", "lineNumber": 203, "methodName": "doFilter", "nativeMethod": false}, {"className": "net.bull.javamelody.MonitoringFilter", "fileName": "MonitoringFilter.java", "lineNumber": 181, "methodName": "doFilter", "nativeMethod": false}, {"className": "net.bull.javamelody.PluginMonitoringFilter", "fileName": "PluginMonitoringFilter.java", "lineNumber": 86, "methodName": "doFilter", "nativeMethod": false}, {"className": "org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter", "fileName": "HudsonMonitoringFilter.java", "lineNumber": 90, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.util.PluginServletFilter$1", "fileName": "PluginServletFilter.java", "lineNumber": 99, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.util.PluginServletFilter", "fileName": "PluginServletFilter.java", "lineNumber": 88, "methodName": "doFilter", "nativeMethod": false}, {"className": "org.eclipse.jetty.servlet.ServletHandler$CachedChain", "fileName": "ServletHandler.java", "lineNumber": 1482, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.security.csrf.CrumbFilter", "fileName": "CrumbFilter.java", "lineNumber": 48, "methodName": "doFilter", "nativeMethod": false}, {"className": "org.eclipse.jetty.servlet.ServletHandler$CachedChain", "fileName": "ServletHandler.java", "lineNumber": 1482, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.security.ChainedServletFilter$1", "fileName": "ChainedServletFilter.java", "lineNumber": 84, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.security.UnwrapSecurityExceptionFilter", "fileName": "UnwrapSecurityExceptionFilter.java", "lineNumber": 51, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.security.ChainedServletFilter$1", "fileName": "ChainedServletFilter.java", "lineNumber": 87, "methodName": "doFilter", "nativeMethod": false}, {"className": "jenkins.security.ExceptionTranslationFilter", "fileName": "ExceptionTranslationFilter.java", "lineNumber": 117, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.security.ChainedServletFilter$1", "fileName": "ChainedServletFilter.java", "lineNumber": 87, "methodName": "doFilter", "nativeMethod": false}, {"className": "org.acegisecurity.providers.anonymous.AnonymousProcessingFilter", "fileName": "AnonymousProcessingFilter.java", "lineNumber": 125, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.security.ChainedServletFilter$1", "fileName": "ChainedServletFilter.java", "lineNumber": 87, "methodName": "doFilter", "nativeMethod": false}, {"className": "org.acegisecurity.ui.rememberme.RememberMeProcessingFilter", "fileName": "RememberMeProcessingFilter.java", "lineNumber": 142, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.security.ChainedServletFilter$1", "fileName": "ChainedServletFilter.java", "lineNumber": 87, "methodName": "doFilter", "nativeMethod": false}, {"className": "org.acegisecurity.ui.AbstractProcessingFilter", "fileName": "AbstractProcessingFilter.java", "lineNumber": 271, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.security.ChainedServletFilter$1", "fileName": "ChainedServletFilter.java", "lineNumber": 87, "methodName": "doFilter", "nativeMethod": false}, {"className": "org.acegisecurity.ui.basicauth.BasicProcessingFilter", "fileName": "BasicProcessingFilter.java", "lineNumber": 174, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.security.ChainedServletFilter$1", "fileName": "ChainedServletFilter.java", "lineNumber": 87, "methodName": "doFilter", "nativeMethod": false}, {"className": "jenkins.security.ApiTokenFilter", "fileName": "ApiTokenFilter.java", "lineNumber": 64, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.security.ChainedServletFilter$1", "fileName": "ChainedServletFilter.java", "lineNumber": 87, "methodName": "doFilter", "nativeMethod": false}, {"className": "org.acegisecurity.context.HttpSessionContextIntegrationFilter", "fileName": "HttpSessionContextIntegrationFilter.java", "lineNumber": 249, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.security.HttpSessionContextIntegrationFilter2", "fileName": "HttpSessionContextIntegrationFilter2.java", "lineNumber": 67, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.security.ChainedServletFilter$1", "fileName": "ChainedServletFilter.java", "lineNumber": 87, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.security.ChainedServletFilter", "fileName": "ChainedServletFilter.java", "lineNumber": 76, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.security.HudsonFilter", "fileName": "HudsonFilter.java", "lineNumber": 164, "methodName": "doFilter", "nativeMethod": false}, {"className": "org.eclipse.jetty.servlet.ServletHandler$CachedChain", "fileName": "ServletHandler.java", "lineNumber": 1482, "methodName": "doFilter", "nativeMethod": false}, {"className": "org.kohsuke.stapler.compression.CompressionFilter", "fileName": "CompressionFilter.java", "lineNumber": 46, "methodName": "doFilter", "nativeMethod": false}, {"className": "org.eclipse.jetty.servlet.ServletHandler$CachedChain", "fileName": "ServletHandler.java", "lineNumber": 1482, "methodName": "doFilter", "nativeMethod": false}, {"className": "hudson.util.CharacterEncodingFilter", "fileName": "CharacterEncodingFilter.java", "lineNumber": 81, "methodName": "doFilter", "nativeMethod": false}, {"className": "org.eclipse.jetty.servlet.ServletHandler$CachedChain", "fileName": "ServletHandler.java", "lineNumber": 1474, "methodName": "doFilter", "nativeMethod": false}, {"className": "org.eclipse.jetty.servlet.ServletHandler", "fileName": "ServletHandler.java", "lineNumber": 499, "methodName": "doHandle", "nativeMethod": false}, {"className": "org.eclipse.jetty.server.handler.ScopedHandler", "fileName": "ScopedHandler.java", "lineNumber": 137, "methodName": "handle", "nativeMethod": false}, {"className": "org.eclipse.jetty.security.SecurityHandler", "fileName": "SecurityHandler.java", "lineNumber": 533, "methodName": "handle", "nativeMethod": false}, {"className": "org.eclipse.jetty.server.session.SessionHandler", "fileName": "SessionHandler.java", "lineNumber": 231, "methodName": "doHandle", "nativeMethod": false}, {"className": "org.eclipse.jetty.server.handler.ContextHandler", "fileName": "ContextHandler.java", "lineNumber": 1086, "methodName": "doHandle", "nativeMethod": false}, {"className": "org.eclipse.jetty.servlet.ServletHandler", "fileName": "ServletHandler.java", "lineNumber": 428, "methodName": "doScope", "nativeMethod": false}, {"className": "org.eclipse.jetty.server.session.SessionHandler", "fileName": "SessionHandler.java", "lineNumber": 193, "methodName": "doScope", "nativeMethod": false}, {"className": "org.eclipse.jetty.server.handler.ContextHandler", "fileName": "ContextHandler.java", "lineNumber": 1020, "methodName": "doScope", "nativeMethod": false}, {"className": "org.eclipse.jetty.server.handler.ScopedHandler", "fileName": "ScopedHandler.java", "lineNumber": 135, "methodName": "handle", "nativeMethod": false}, {"className": "org.eclipse.jetty.server.handler.HandlerWrapper", "fileName": "HandlerWrapper.java", "lineNumber": 116, "methodName": "handle", "nativeMethod": false}, {"className": "org.eclipse.jetty.server.Server", "fileName": "Server.java", "lineNumber": 370, "methodName": "handle", "nativeMethod": false}, {"className": "org.eclipse.jetty.server.AbstractHttpConnection", "fileName": "AbstractHttpConnection.java", "lineNumber": 489, "methodName": "handleRequest", "nativeMethod": false}, {"className": "org.eclipse.jetty.server.AbstractHttpConnection", "fileName": "AbstractHttpConnection.java", "lineNumber": 960, "methodName": "content", "nativeMethod": false}, {"className": "org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler", "fileName": "AbstractHttpConnection.java", "lineNumber": 1021, "methodName": "content", "nativeMethod": false}, {"className": "org.eclipse.jetty.http.HttpParser", "fileName": "HttpParser.java", "lineNumber": 865, "methodName": "parseNext", "nativeMethod": false}, {"className": "org.eclipse.jetty.http.HttpParser", "fileName": "HttpParser.java", "lineNumber": 240, "methodName": "parseAvailable", "nativeMethod": false}, {"className": "org.eclipse.jetty.server.AsyncHttpConnection", "fileName": "AsyncHttpConnection.java", "lineNumber": 82, "methodName": "handle", "nativeMethod": false}, {"className": "org.eclipse.jetty.io.nio.SelectChannelEndPoint", "fileName": "SelectChannelEndPoint.java", "lineNumber": 668, "methodName": "handle", "nativeMethod": false}, {"className": "org.eclipse.jetty.io.nio.SelectChannelEndPoint$1", "fileName": "SelectChannelEndPoint.java", "lineNumber": 52, "methodName": "run", "nativeMethod": false}, {"className": "winstone.BoundedExecutorService$1", "fileName": "BoundedExecutorService.java", "lineNumber": 77, "methodName": "run", "nativeMethod": false}, {"className": "java.util.concurrent.ThreadPoolExecutor", "fileName": "ThreadPoolExecutor.java", "lineNumber": 1145, "methodName": "runWorker", "nativeMethod": false}, {"className": "java.util.concurrent.ThreadPoolExecutor$Worker", "fileName": "ThreadPoolExecutor.java", "lineNumber": 615, "methodName": "run", "nativeMethod": false}, {"className": "java.lang.Thread", "fileName": "Thread.java", "lineNumber": 744, "methodName": "run", "nativeMethod": false}]",
"suppressed": "[]"
}

This translates to the following stack trace:
at java.util.ComparableTimSort(ComparableTimSort.java:290)
at java.util.ComparableTimSort(ComparableTimSort.java:157)
at java.util.Arrays(Arrays.java:537)
at java.util.TimSort(TimSort.java:178)
at java.util.TimSort(TimSort.java:173)
at java.util.Arrays(Arrays.java:659)
at java.util.Collections(Collections.java:217)
at com.smartcodeltd.jenkinsci.plugins.buildmonitor.BuildMonitorView(BuildMonitorView.java:150)
at com.smartcodeltd.jenkinsci.plugins.buildmonitor.BuildMonitorView(BuildMonitorView.java:132)
at sun.reflect.NativeMethodAccessorImpl(NativeMethodAccessorImpl.java:-2)
at sun.reflect.NativeMethodAccessorImpl(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method(Method.java:606)
at org.kohsuke.stapler.Function$InstanceFunction(Function.java:298)
at org.kohsuke.stapler.Function(Function.java:161)
at org.kohsuke.stapler.Function(Function.java:96)
at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher(MetaClass.java:465)
at org.kohsuke.stapler.NameBasedDispatcher(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler(Stapler.java:728)
at org.kohsuke.stapler.Stapler(Stapler.java:858)
at org.kohsuke.stapler.MetaClass$12(MetaClass.java:390)
at org.kohsuke.stapler.Stapler(Stapler.java:728)
at org.kohsuke.stapler.Stapler(Stapler.java:858)
at org.kohsuke.stapler.Stapler(Stapler.java:795)
at org.kohsuke.stapler.Stapler(Stapler.java:858)
at org.kohsuke.stapler.Stapler(Stapler.java:631)
at org.kohsuke.stapler.Stapler(Stapler.java:186)
at javax.servlet.http.HttpServlet(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder(ServletHolder.java:686)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain(ServletHandler.java:1494)
at hudson.util.PluginServletFilter$1(PluginServletFilter.java:96)
at hudson.plugins.greenballs.GreenBallFilter(GreenBallFilter.java:58)
at hudson.util.PluginServletFilter$1(PluginServletFilter.java:99)
at net.bull.javamelody.MonitoringFilter(MonitoringFilter.java:203)
at net.bull.javamelody.MonitoringFilter(MonitoringFilter.java:181)
at net.bull.javamelody.PluginMonitoringFilter(PluginMonitoringFilter.java:86)
at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter(HudsonMonitoringFilter.java:90)
at hudson.util.PluginServletFilter$1(PluginServletFilter.java:99)
at hudson.util.PluginServletFilter(PluginServletFilter.java:88)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain(ServletHandler.java:1482)
at hudson.security.csrf.CrumbFilter(CrumbFilter.java:48)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain(ServletHandler.java:1482)
at hudson.security.ChainedServletFilter$1(ChainedServletFilter.java:84)
at hudson.security.UnwrapSecurityExceptionFilter(UnwrapSecurityExceptionFilter.java:51)
at hudson.security.ChainedServletFilter$1(ChainedServletFilter.java:87)
at jenkins.security.ExceptionTranslationFilter(ExceptionTranslationFilter.java:117)
at hudson.security.ChainedServletFilter$1(ChainedServletFilter.java:87)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter(AnonymousProcessingFilter.java:125)
at hudson.security.ChainedServletFilter$1(ChainedServletFilter.java:87)
at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter(RememberMeProcessingFilter.java:142)
at hudson.security.ChainedServletFilter$1(ChainedServletFilter.java:87)
at org.acegisecurity.ui.AbstractProcessingFilter(AbstractProcessingFilter.java:271)
at hudson.security.ChainedServletFilter$1(ChainedServletFilter.java:87)
at org.acegisecurity.ui.basicauth.BasicProcessingFilter(BasicProcessingFilter.java:174)
at hudson.security.ChainedServletFilter$1(ChainedServletFilter.java:87)
at jenkins.security.ApiTokenFilter(ApiTokenFilter.java:64)
at hudson.security.ChainedServletFilter$1(ChainedServletFilter.java:87)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter(HttpSessionContextIntegrationFilter.java:249)
at hudson.security.HttpSessionContextIntegrationFilter2(HttpSessionContextIntegrationFilter2.java:67)
at hudson.security.ChainedServletFilter$1(ChainedServletFilter.java:87)
at hudson.security.ChainedServletFilter(ChainedServletFilter.java:76)
at hudson.security.HudsonFilter(HudsonFilter.java:164)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain(ServletHandler.java:1482)
at org.kohsuke.stapler.compression.CompressionFilter(CompressionFilter.java:46)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain(ServletHandler.java:1482)
at hudson.util.CharacterEncodingFilter(CharacterEncodingFilter.java:81)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain(ServletHandler.java:1474)
at org.eclipse.jetty.servlet.ServletHandler(ServletHandler.java:499)
at org.eclipse.jetty.server.handler.ScopedHandler(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler(SecurityHandler.java:533)
at org.eclipse.jetty.server.session.SessionHandler(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler(ContextHandler.java:1086)
at org.eclipse.jetty.servlet.ServletHandler(ServletHandler.java:428)
at org.eclipse.jetty.server.session.SessionHandler(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler(ContextHandler.java:1020)
at org.eclipse.jetty.server.handler.ScopedHandler(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection(AbstractHttpConnection.java:960)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler(AbstractHttpConnection.java:1021)
at org.eclipse.jetty.http.HttpParser(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1(SelectChannelEndPoint.java:52)
at winstone.BoundedExecutorService$1(BoundedExecutorService.java:77)
at java.util.concurrent.ThreadPoolExecutor(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker(ThreadPoolExecutor.java:615)
at java.lang.Thread(Thread.java:744)

Downgrading to build 68 restores the plugin to working order.

Possibility of insert "build now" in the view

Yes I can

Before, good job man, this amazing viewer, congratulations.

So, I'll send to you in this mail one image to try explain, because I my
jenkins I use a lot jobs, so for me is more simple if i can start the build
direclty in the view.

If could you please create this changes, your view is a functionally
complete

tks in advance
best regards

Jobs not displaying and Settings not accessible

I really like the look of this monitor, however, when I installed it and created it via view it doesn't display any jobs and I can't access the settings at the top right at all. Originally I thought it was something to do with the fact that I am using Firefox, however, when I installed the latest Google Chrome and Opera it still has the same problem. Thanks in advance for your help on this.

Error page appears too often

I use raspberry pi with wi-fi net connection to show my Jenkins job status which turn my system kind of slow.
This makes that error page msg to appear too often.

I don't know if this is easy or even possible but maybe you could add a config variable for slow/not stable connections ? (that would wait a little longer or refresh with longer periods of time)

A alternative 'solution' would be to make the error page more unnoticed. I'll open another issue for this.

Periodically receiving 502 error dialogs

We have the BMV up on a projector and periodically we it give an error 502 dialog that we have to click through. There seems to be no other issues, and clicking through it always results in normal operation until it comes back. We're on a small internal network that we don't notice any network interruptions on.

BMV: 1.3+build.72
Jenkins: 1.554

Feature request: option to display build name instead of build number

Thanks for a great plugin - here's an idea for an enhancement. We are using the Build Name Setter Plugin to set the display name for our builds. We would like to be able to display these build names in the monitor view instead of build numbers like '#123'. Our builds of a Jenkins project have names like 'XYZ T123 BLD 456 #57' or maybe shorter like 'X T123/456 #57'. What we have is a build pipeline orchestrated in Jenkins but also involving jobs / tasks running in external systems, and we are using the build display name to see what is going on as our builds progress through this process. So in my example build name 'XYZ T123' refers to an identifier in an external system XYZ, 'BLD 456' is the build number of a Jenkins job that kicked off the orchestration and can appear in build names of other jobs as our original build artefact proceeds through the entire flow, '#57' is just the build number of the Jenkins job we set the display name on. The build name is returned by 'build.getDisplayName()' in the Jenkins API (AbstractBuild class, I think), and the Build Name Setter plugin is using macro tokens and setting it with something like 'build.setDisplayName()' (which is what we actually do in Build Flow DSL where build name setter is not available).

To make it clearer, in some of our Jenkins dashboards we see builds like this (I have simplified & abstracted it a lot):

screen shot 2013-07-29 at 00 41 07
(I faked this up, ignore the last build times they don't make sense - it is the build names I was trying to show)

And it would be nice to see those build names we have in the monitor view instead of just build numbers like this:
screen shot 2013-07-29 at 01 02 25

Then the monitor would show us where we are at in our pipeline, it would be great!

how to group the jobs ?

How can I group the several jobs in one block ?

I can't figure out by checking the README.md and the configuration of the view, this is the feature exists in radiator view

support Amber boxes like Radiator view

in radiator view, if the job is claimed, it will show yellow color, it is very good feature for us to keep focus.

is it possible to add in coming release.

Idea/Feature Request: Arbitrary job order

Hi,

thanks for your great plugin. Is there a way to define an arbitrary job order? Right now it is sorted alphabetically.

  • Lars

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/2858008-idea-feature-request-arbitrary-job-order?utm_campaign=plugin&utm_content=tracker%2F580790&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F580790&utm_medium=issues&utm_source=github).

After upgrade jenkins to 1.538 the views dont' show the jobs

Hi, with the latest version of the plugin, after upgrade jenkins from 1.537 to 1.538

The views don't show the configured jobs.

In the configure page, no jobs are selected, but on the config.xml file the jobs appear.

Every time you access to the view on the jenkings log is logged:

Nov 6, 2013 5:44:28 PM hudson.ExpressionFactory2$JexlExpression evaluate
WARNING: Caught exception evaluating: it.allViewJobNamesAsJson in /jenkins/view/builds%20prod%201/. Reason: java.lang.reflect.InvocationTargetException
java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor164.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.commons.jexl.util.PropertyExecutor.execute(PropertyExecutor.java:125)
    at org.apache.commons.jexl.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:314)
    at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:185)
    at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:75)
    at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83)
    at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57)
    at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51)
    at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80)
    at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:74)
    at org.apache.commons.jelly.parser.EscapingExpression.evaluate(EscapingExpression.java:24)
    at org.apache.commons.jelly.impl.ExpressionScript.run(ExpressionScript.java:66)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
    at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
    at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
    at org.kohsuke.stapler.jelly.CompressTag.doTag(CompressTag.java:44)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
    at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63)
    at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53)
    at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:112)
    at org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:127)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:716)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:841)
    at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:727)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:841)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:630)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:224)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:64)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
    at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:370)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
    at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassCastException: hudson.maven.MavenModule cannot be cast to hudson.model.TopLevelItem
    at hudson.model.ListView.expand(ListView.java:189)
    at hudson.model.ListView.expand(ListView.java:192)
    at hudson.model.ListView.getItems(ListView.java:178)
    at hudson.model.ListView.getItems(ListView.java:60)
    at org.jenkins.ci.plugins.keyboard_shortcuts.KeyboardShortcutsPageDecorator.getAllViewJobNamesAsJson(KeyboardShortcutsPageDecorator.java:90)
    ... 102 more
Nov 6, 2013 5:44:28 PM hudson.ExpressionFactory2$JexlExpression evaluate
WARNING: Caught exception evaluating: it.items in /jenkins/view/builds%20prod%201/. Reason: java.lang.reflect.InvocationTargetException
java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor265.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.commons.jexl.util.PropertyExecutor.execute(PropertyExecutor.java:125)
    at org.apache.commons.jexl.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:314)
    at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:185)
    at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:75)
    at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83)
    at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57)
    at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51)
    at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80)
    at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:74)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$3.run(CoreTagLibrary.java:134)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
    at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
    at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
    at org.kohsuke.stapler.jelly.CompressTag.doTag(CompressTag.java:44)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
    at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63)
    at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53)
    at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:112)
    at org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:127)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:716)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:841)
    at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:727)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:841)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:630)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:224)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:64)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
    at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:370)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
    at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassCastException: hudson.maven.MavenModule cannot be cast to hudson.model.TopLevelItem
    at hudson.model.ListView.expand(ListView.java:189)
    at hudson.model.ListView.expand(ListView.java:192)
    at hudson.model.ListView.getItems(ListView.java:178)
    ... 109 more
Nov 6, 2013 5:44:28 PM hudson.ExpressionFactory2$JexlExpression evaluate
WARNING: Caught exception evaluating: it.allViewJobNamesAsJson in /jenkins/view/builds%20prod%201/. Reason: java.lang.reflect.InvocationTargetException
java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor164.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.commons.jexl.util.PropertyExecutor.execute(PropertyExecutor.java:125)
    at org.apache.commons.jexl.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:314)
    at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:185)
    at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:75)
    at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83)
    at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57)
    at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51)
    at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80)
    at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:74)
    at org.apache.commons.jelly.parser.EscapingExpression.evaluate(EscapingExpression.java:24)
    at org.apache.commons.jelly.impl.ExpressionScript.run(ExpressionScript.java:66)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
    at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
    at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
    at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
    at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
    at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
    at org.kohsuke.stapler.jelly.CompressTag.doTag(CompressTag.java:44)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
    at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63)
    at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53)
    at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:112)
    at org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:127)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:716)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:841)
    at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:727)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:841)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:630)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:224)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:64)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
    at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:370)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
    at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassCastException: hudson.maven.MavenModule cannot be cast to hudson.model.TopLevelItem
    at hudson.model.ListView.expand(ListView.java:189)
    at hudson.model.ListView.expand(ListView.java:192)
    at hudson.model.ListView.getItems(ListView.java:178)
    at hudson.model.ListView.getItems(ListView.java:60)
    at org.jenkins.ci.plugins.keyboard_shortcuts.KeyboardShortcutsPageDecorator.getAllViewJobNamesAsJson(KeyboardShortcutsPageDecorator.java:90)
    ... 131 more
Nov 6, 2013 5:44:28 PM hudson.ExpressionFactory2$JexlExpression evaluate
WARNING: Caught exception evaluating: it.isEmpty() in /jenkins/view/builds%20prod%201/. Reason: java.lang.ClassCastException: hudson.maven.MavenModule cannot be cast to hudson.model.TopLevelItem
java.lang.ClassCastException: hudson.maven.MavenModule cannot be cast to hudson.model.TopLevelItem
    at hudson.model.ListView.expand(ListView.java:189)
    at hudson.model.ListView.expand(ListView.java:192)
    at hudson.model.ListView.getItems(ListView.java:178)
    at com.smartcodeltd.jenkinsci.plugins.buildmonitor.BuildMonitorView.jobViews(BuildMonitorView.java:109)
    at com.smartcodeltd.jenkinsci.plugins.buildmonitor.BuildMonitorView.isEmpty(BuildMonitorView.java:98)
    at sun.reflect.GeneratedMethodAccessor266.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:258)
    at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:104)
    at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83)
    at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57)
    at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51)
    at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80)
    at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:74)
    at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:61)
    at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:71)
    at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:44)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
    at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
    at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
    at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
    at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
    at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
    at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
    at org.kohsuke.stapler.jelly.CompressTag.doTag(CompressTag.java:44)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
    at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63)
    at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53)
    at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:112)
    at org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:127)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:716)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:841)
    at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:727)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:841)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:630)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:224)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:64)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
    at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:370)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
    at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:662)

Play sound on build failure

I'm after a way to draw attention to the build monitor on a failed build and playing a sound would seem to do that. Could this plugin be extended to play a sound on failures - really a duplication of the functionality of the Jenkins Sounds plugin but I cannot figure out how to get that working on the PC the build monitor is running on.

Jobs not displaying and Settings not accessible

I really like the look of this monitor, however, when I installed it and created it via view it doesn't display any jobs and I can't access the settings at the top right at all. Originally I thought it was something to do with the fact that I am using Firefox, however, when I installed the latest Google Chrome and Opera it still has the same problem. Thanks in advance for your help on this.

Help

I would like to change some configurations in buildmonitorview, I take the files and start the work, but i dont know what I simulate in my jenkins, could you help me, tks.

Feature Request:Pipeline Grouping

Would it possible to include in a future release a setting to group jobs. Within the group the different jobs could pass or fail. This is requested because I am running a specific project which has two regression, a build and a sanity test under it. It could be possible to have multiple walls with one for each project, however, the team wants to be able to view four at the one time. Thanks in advance.

Option to show result breakdown for matrix builds

We use matrix builds to run tests and build releases across multiple platforms. Sometimes a build only fails on one platform, making the entire result red.

Although this is certainly the case with Jenkins itself as well, showing the whole build as red when really only a fraction of it failed, doesn't really give a good impression of how stable the build is. The common scenario in our case is that Windows is stable and Mac and Linux are unstable (because development is still in progress for those ports.) This results in the whole build being unstable, which then shows up on the build monitor as "failed" because it still doesn't differentiate between the two states.

A lot of the time, the failure on that one slave occurs just because the slave it ran on had a configuration issue. It's nice to know which platform it was, because it can affect which developer will be investigating the issue.

Being able to see the progress of each build independently would also be rather nice. It might not even be necessary to show which build is which, as long as the order of them is stable (which I think in Jenkins it is.)

Make the configurable number of columns go up to 8

Hi @jan-molak

Firstly, thank you for this excellent Jenkins plugin. It is the best looking build monitor plugin I've seen and the easiest to configure and use.

I was wondering if you would consider enhancing the plugin to be able to configure up to 8 columns (up from the 4 currently available)? Our use case is as follows

I work for a test automation team that assists each of our development sprint teams as required and our aim is that each of our teams will have a screen displaying the build monitor plugin for the Jenkins jobs that are useful for their team. However in my automation team we would like to display the jobs across all of the teams that we are responsible for so we can keep an eye on all of them. This number has climbed quite high (currently 37 jobs) so currently we split the jobs across two old PC monitors each displaying half of the jobs in separate browser windows. With the addition of more columns it would allow us to move to a big fancy HD TV instead of the old monitors, which would be awesome.

Thanks

Caleb

Exception in fetchJobViews - hudson.model.FreeStyleProject cannot be cast to java.lang.Comparable

Got the following exception when opening the monitor. Upgraded plugins last week and think it started right after the upgrade. Using "1.3+build.70"

Request URL: http://jenkins/$stapler/bound/5c803e06-ae15-475c-9f0a-b392d96d4782/fetchJobViews

buildview-exception1

buildview-exception

Full json response:

{"cause":null,"localizedMessage":"hudson.model.FreeStyleProject cannot be cast to java.lang.Comparable","message":"hudson.model.FreeStyleProject cannot be cast to java.lang.Comparable","stackTrace":[{"className":"java.util.ComparableTimSort","fileName":"","lineNumber":-1,"methodName":"countRunAndMakeAscending","nativeMethod":false},{"className":"java.util.ComparableTimSort","fileName":"","lineNumber":-1,"methodName":"sort","nativeMethod":false},{"className":"java.util.Arrays","fileName":"","lineNumber":-1,"methodName":"sort","nativeMethod":false},{"className":"java.util.TimSort","fileName":"","lineNumber":-1,"methodName":"sort","nativeMethod":false},{"className":"java.util.TimSort","fileName":"","lineNumber":-1,"methodName":"sort","nativeMethod":false},{"className":"java.util.Arrays","fileName":"","lineNumber":-1,"methodName":"sort","nativeMethod":false},{"className":"java.util.Collections","fileName":"","lineNumber":-1,"methodName":"sort","nativeMethod":false},{"className":"com.smartcodeltd.jenkinsci.plugins.buildmonitor.BuildMonitorView","fileName":"BuildMonitorView.java","lineNumber":150,"methodName":"jobViews","nativeMethod":false},{"className":"com.smartcodeltd.jenkinsci.plugins.buildmonitor.BuildMonitorView","fileName":"BuildMonitorView.java","lineNumber":132,"methodName":"fetchJobViews","nativeMethod":false},{"className":"sun.reflect.NativeMethodAccessorImpl","fileName":"","lineNumber":-2,"methodName":"invoke0","nativeMethod":true},{"className":"sun.reflect.NativeMethodAccessorImpl","fileName":"","lineNumber":-1,"methodName":"invoke","nativeMethod":false},{"className":"sun.reflect.DelegatingMethodAccessorImpl","fileName":"","lineNumber":-1,"methodName":"invoke","nativeMethod":false},{"className":"java.lang.reflect.Method","fileName":"","lineNumber":-1,"methodName":"invoke","nativeMethod":false},{"className":"org.kohsuke.stapler.Function$InstanceFunction","fileName":"Function.java","lineNumber":298,"methodName":"invoke","nativeMethod":false},{"className":"org.kohsuke.stapler.Function","fileName":"Function.java","lineNumber":161,"methodName":"bindAndInvoke","nativeMethod":false},{"className":"org.kohsuke.stapler.Function","fileName":"Function.java","lineNumber":96,"methodName":"bindAndInvokeAndServeResponse","nativeMethod":false},{"className":"org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher","fileName":"MetaClass.java","lineNumber":465,"methodName":"doDispatch","nativeMethod":false},{"className":"org.kohsuke.stapler.NameBasedDispatcher","fileName":"NameBasedDispatcher.java","lineNumber":53,"methodName":"dispatch","nativeMethod":false},{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":728,"methodName":"tryInvoke","nativeMethod":false},{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":858,"methodName":"invoke","nativeMethod":false},{"className":"org.kohsuke.stapler.MetaClass$12","fileName":"MetaClass.java","lineNumber":390,"methodName":"dispatch","nativeMethod":false},{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":728,"methodName":"tryInvoke","nativeMethod":false},{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":858,"methodName":"invoke","nativeMethod":false},{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":795,"methodName":"tryInvoke","nativeMethod":false},{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":858,"methodName":"invoke","nativeMethod":false},{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":631,"methodName":"invoke","nativeMethod":false},{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":186,"methodName":"service","nativeMethod":false},{"className":"javax.servlet.http.HttpServlet","fileName":"HttpServlet.java","lineNumber":848,"methodName":"service","nativeMethod":false},{"className":"org.eclipse.jetty.servlet.ServletHolder","fileName":"ServletHolder.java","lineNumber":686,"methodName":"handle","nativeMethod":false},{"className":"org.eclipse.jetty.servlet.ServletHandler$CachedChain","fileName":"ServletHandler.java","lineNumber":1494,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.util.PluginServletFilter$1","fileName":"PluginServletFilter.java","lineNumber":96,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.plugins.greenballs.GreenBallFilter","fileName":"GreenBallFilter.java","lineNumber":58,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.util.PluginServletFilter$1","fileName":"PluginServletFilter.java","lineNumber":99,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.util.PluginServletFilter","fileName":"PluginServletFilter.java","lineNumber":88,"methodName":"doFilter","nativeMethod":false},{"className":"org.eclipse.jetty.servlet.ServletHandler$CachedChain","fileName":"ServletHandler.java","lineNumber":1482,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.security.csrf.CrumbFilter","fileName":"CrumbFilter.java","lineNumber":48,"methodName":"doFilter","nativeMethod":false},{"className":"org.eclipse.jetty.servlet.ServletHandler$CachedChain","fileName":"ServletHandler.java","lineNumber":1482,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.security.ChainedServletFilter$1","fileName":"ChainedServletFilter.java","lineNumber":84,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.security.UnwrapSecurityExceptionFilter","fileName":"UnwrapSecurityExceptionFilter.java","lineNumber":51,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.security.ChainedServletFilter$1","fileName":"ChainedServletFilter.java","lineNumber":87,"methodName":"doFilter","nativeMethod":false},{"className":"jenkins.security.ExceptionTranslationFilter","fileName":"ExceptionTranslationFilter.java","lineNumber":117,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.security.ChainedServletFilter$1","fileName":"ChainedServletFilter.java","lineNumber":87,"methodName":"doFilter","nativeMethod":false},{"className":"org.acegisecurity.providers.anonymous.AnonymousProcessingFilter","fileName":"AnonymousProcessingFilter.java","lineNumber":125,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.security.ChainedServletFilter$1","fileName":"ChainedServletFilter.java","lineNumber":87,"methodName":"doFilter","nativeMethod":false},{"className":"org.acegisecurity.ui.rememberme.RememberMeProcessingFilter","fileName":"RememberMeProcessingFilter.java","lineNumber":142,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.security.ChainedServletFilter$1","fileName":"ChainedServletFilter.java","lineNumber":87,"methodName":"doFilter","nativeMethod":false},{"className":"org.acegisecurity.ui.AbstractProcessingFilter","fileName":"AbstractProcessingFilter.java","lineNumber":271,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.security.ChainedServletFilter$1","fileName":"ChainedServletFilter.java","lineNumber":87,"methodName":"doFilter","nativeMethod":false},{"className":"org.acegisecurity.ui.basicauth.BasicProcessingFilter","fileName":"BasicProcessingFilter.java","lineNumber":174,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.security.ChainedServletFilter$1","fileName":"ChainedServletFilter.java","lineNumber":87,"methodName":"doFilter","nativeMethod":false},{"className":"jenkins.security.ApiTokenFilter","fileName":"ApiTokenFilter.java","lineNumber":64,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.security.ChainedServletFilter$1","fileName":"ChainedServletFilter.java","lineNumber":87,"methodName":"doFilter","nativeMethod":false},{"className":"org.acegisecurity.context.HttpSessionContextIntegrationFilter","fileName":"HttpSessionContextIntegrationFilter.java","lineNumber":249,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.security.HttpSessionContextIntegrationFilter2","fileName":"HttpSessionContextIntegrationFilter2.java","lineNumber":67,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.security.ChainedServletFilter$1","fileName":"ChainedServletFilter.java","lineNumber":87,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.security.ChainedServletFilter","fileName":"ChainedServletFilter.java","lineNumber":76,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.security.HudsonFilter","fileName":"HudsonFilter.java","lineNumber":164,"methodName":"doFilter","nativeMethod":false},{"className":"org.eclipse.jetty.servlet.ServletHandler$CachedChain","fileName":"ServletHandler.java","lineNumber":1482,"methodName":"doFilter","nativeMethod":false},{"className":"org.kohsuke.stapler.compression.CompressionFilter","fileName":"CompressionFilter.java","lineNumber":46,"methodName":"doFilter","nativeMethod":false},{"className":"org.eclipse.jetty.servlet.ServletHandler$CachedChain","fileName":"ServletHandler.java","lineNumber":1482,"methodName":"doFilter","nativeMethod":false},{"className":"hudson.util.CharacterEncodingFilter","fileName":"CharacterEncodingFilter.java","lineNumber":81,"methodName":"doFilter","nativeMethod":false},{"className":"org.eclipse.jetty.servlet.ServletHandler$CachedChain","fileName":"ServletHandler.java","lineNumber":1474,"methodName":"doFilter","nativeMethod":false},{"className":"org.eclipse.jetty.servlet.ServletHandler","fileName":"ServletHandler.java","lineNumber":499,"methodName":"doHandle","nativeMethod":false},{"className":"org.eclipse.jetty.server.handler.ScopedHandler","fileName":"ScopedHandler.java","lineNumber":137,"methodName":"handle","nativeMethod":false},{"className":"org.eclipse.jetty.security.SecurityHandler","fileName":"SecurityHandler.java","lineNumber":533,"methodName":"handle","nativeMethod":false},{"className":"org.eclipse.jetty.server.session.SessionHandler","fileName":"SessionHandler.java","lineNumber":231,"methodName":"doHandle","nativeMethod":false},{"className":"org.eclipse.jetty.server.handler.ContextHandler","fileName":"ContextHandler.java","lineNumber":1086,"methodName":"doHandle","nativeMethod":false},{"className":"org.eclipse.jetty.servlet.ServletHandler","fileName":"ServletHandler.java","lineNumber":428,"methodName":"doScope","nativeMethod":false},{"className":"org.eclipse.jetty.server.session.SessionHandler","fileName":"SessionHandler.java","lineNumber":193,"methodName":"doScope","nativeMethod":false},{"className":"org.eclipse.jetty.server.handler.ContextHandler","fileName":"ContextHandler.java","lineNumber":1020,"methodName":"doScope","nativeMethod":false},{"className":"org.eclipse.jetty.server.handler.ScopedHandler","fileName":"ScopedHandler.java","lineNumber":135,"methodName":"handle","nativeMethod":false},{"className":"org.eclipse.jetty.server.handler.HandlerWrapper","fileName":"HandlerWrapper.java","lineNumber":116,"methodName":"handle","nativeMethod":false},{"className":"org.eclipse.jetty.server.Server","fileName":"Server.java","lineNumber":370,"methodName":"handle","nativeMethod":false},{"className":"org.eclipse.jetty.server.AbstractHttpConnection","fileName":"AbstractHttpConnection.java","lineNumber":489,"methodName":"handleRequest","nativeMethod":false},{"className":"org.eclipse.jetty.server.AbstractHttpConnection","fileName":"AbstractHttpConnection.java","lineNumber":960,"methodName":"content","nativeMethod":false},{"className":"org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler","fileName":"AbstractHttpConnection.java","lineNumber":1021,"methodName":"content","nativeMethod":false},{"className":"org.eclipse.jetty.http.HttpParser","fileName":"HttpParser.java","lineNumber":865,"methodName":"parseNext","nativeMethod":false},{"className":"org.eclipse.jetty.http.HttpParser","fileName":"HttpParser.java","lineNumber":240,"methodName":"parseAvailable","nativeMethod":false},{"className":"org.eclipse.jetty.server.AsyncHttpConnection","fileName":"AsyncHttpConnection.java","lineNumber":82,"methodName":"handle","nativeMethod":false},{"className":"org.eclipse.jetty.io.nio.SelectChannelEndPoint","fileName":"SelectChannelEndPoint.java","lineNumber":668,"methodName":"handle","nativeMethod":false},{"className":"org.eclipse.jetty.io.nio.SelectChannelEndPoint$1","fileName":"SelectChannelEndPoint.java","lineNumber":52,"methodName":"run","nativeMethod":false},{"className":"winstone.BoundedExecutorService$1","fileName":"BoundedExecutorService.java","lineNumber":77,"methodName":"run","nativeMethod":false},{"className":"java.util.concurrent.ThreadPoolExecutor","fileName":"","lineNumber":-1,"methodName":"runWorker","nativeMethod":false},{"className":"java.util.concurrent.ThreadPoolExecutor$Worker","fileName":"","lineNumber":-1,"methodName":"run","nativeMethod":false},{"className":"java.lang.Thread","fileName":"","lineNumber":-1,"methodName":"run","nativeMethod":false}],"suppressed":[]}

Unable to display the jobs when not authenticated

Hello !

The build monitor view works perfectly when I'm authenticated.
But It only shows the title and settings button when I'm not authenticated.
On our server, anonymous users can see the jobs on the standard Jenkins UI.

Our configuration :
Jenkins ver. 1.526
Authentication is done by Atlassian Crowd with matrix based access right.

Anonymous users have the following rights :
Global : read
Slave : nothing
Job : read + discover
Views : Read
Version : nothing

Thanks
Best Regards
Nicolas

Ordering and display names

Great work so far, I really appreciate the plugin! I am using the multijob plugin to chain various jobs and I would like to be able to order the jobs manually in the build monitor. I have tried to edit the config.xml and put jobs in a different order, but then it removes some jobs from the monitor instead of reordering them. Is there a way to order jobs manually or do you have intentions to implement such functionality?

Next to that, I am using job names which are to long because of some prefixing. Adding a job display name is not picked up by the monitor. Is this also scheduled for a next release? Thanks!

Support View Job Filters plugin

With lots of jobs, we want something more dynamic from our wall that lets us filter on failing jobs and building jobs. One of your competitors has a nice "Jobs active this week" type of config that is almost it but is taking too much responsibility itself and falls flat as a most jobs might be "touched" by a release process during some week.

I would really like to nominate any-other-view from to put buildmonitor on top of. That way I can use any other plugins and enhancements the community can supply to filter jobs however I see fit then just use BuildMonitor to display them really nicely.

Allow logo instead of header

It would be great if the header text could be replaced or included with a logo image. This can be done by going into the classes.jar and editing the main.jelly file, but obviously this isn't ideal!

Thanks

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/2292852-allow-logo-instead-of-header?utm_campaign=plugin&utm_content=tracker%2F580790&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F580790&utm_medium=issues&utm_source=github).

Show who's in the queue and what position they are in the queue

Can you display who has a job in the queue and what position they are in? So if I kicked off a build and I'm up next then you could say "Shannon - Next" or "Shannon - 1" or whatever you like. You are creative and we like what you come up with, so I'm sure it will be good. :) If it is initiated by SCM polling, can you figure out who is responsible for the commit that triggered the build like you do for displaying who might be responsible for broken builds?

Also, minor issue, for a job that has never been run, you display it as red, and it should probably be gray (or whatever you like).

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Can not display any jobs if no network.

Hi, I have been used your plugins for a while. Now I want to move my Jenkins to Virtual Machine which doesn't connect the network. And then, all the jobs can not be displayed. I wander why? And what can I do to fix it?
PS: It can display everything except jobs, and also I can add/delete jobs successfully.
wanqxu cisco com_20131104_162123

Hide possible culprits on "claimed" builds

Possibly this should be optional but my gut feeling is that the use for a wallboard is to see what is failing and who to ask about it. Once "claimed", additional names are just visual noise. It seems superfluous to show the list of "possibles" when we have a defined owner.

development environment errors

I cloned the source and ran mvn hpi:run I see the following errors when the app is coming up.

 SEVERE: Failed Loading plugin build-failure-analyzer
java.io.IOException: Dependency git (1.1.10) doesn't exist
        at hudson.PluginWrapper.resolvePluginDependencies(PluginWrapper.java:467)
        at hudson.PluginManager$2$1$1.run(PluginManager.java:316)

After the app comes up, I tried creating a Freestyle job and I it errors out with the following error.

javax.servlet.ServletException: org.apache.commons.jelly.JellyTagException: jar:file:/Users/sgaddipati/code/jenkins-build-monitor-plugin/target/work/webapp/WEB-INF/lib/jenkins-core-1.480.jar!/lib/hudson/project/projectActionFloatingBox.jelly:38:74: <st:include> Cannot invoke method isGraphsEnabled() on null object
    at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:112)
    at org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:127)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:563)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:659)
    at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:241)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:574)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:659)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:488)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:162)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1074)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:95)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:87)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:50)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
    at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:146)
    at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
    at org.mortbay.jetty.Server.handle(Server.java:285)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:751)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:500)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:329)
    at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
Caused by: org.apache.commons.jelly.JellyTagException: jar:file:/Users/sgaddipati/code/jenkins-build-monitor-plugin/target/work/webapp/WEB-INF/lib/jenkins-core-1.480.jar!/lib/hudson/project/projectActionFloatingBox.jelly:38:74: <st:include> Cannot invoke method isGraphsEnabled() on null object
    at org.apache.commons.jelly.impl.TagScript.handleException(TagScript.java:716)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:282)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
    at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:270)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:119)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
    at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:146)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:270)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:98)
    at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:270)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:119)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:98)
    at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:270)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:119)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
    at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63)
    at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53)
    at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:107)
    ... 41 more
Caused by: java.lang.NullPointerException: Cannot invoke method isGraphsEnabled() on null object
    at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:77)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:45)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
    at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:32)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
    at com.sonyericsson.jenkins.plugins.bfa.graphs.ProjectGraphAction.floatingBox.run(floatingBox.groovy:27)
    at org.kohsuke.stapler.jelly.groovy.GroovierJellyScript.run(GroovierJellyScript.java:66)
    at org.kohsuke.stapler.jelly.groovy.GroovierJellyScript.run(GroovierJellyScript.java:59)
    at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:146)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:270)
    ... 83 more

Support environments without access to the Internet

Hi,

we have our Jenkins server running in an environment without access to the internet. Would it be possible to have a version of the build monitor plugin that does not require internet access, but have all required resources bundled with the plugin?

calculated time not correct in latest .59 release

I think the build time is not taking into consideration all activities. My build times for build X for example are about 1.5 hours, but the build monitor is projecting 1.25. We do archive logs and process compiler/lint warnings, so maybe these activities aren't being taken into account?

I actually liked the progress bar even though the projected times are more valuable. It was nice to be able to just look at a bar with a quick glance and see about how far we were into a build. Probably too much clutter to have both progress bar and times though eh?

Customise Build Monitor with URL parameters

We run this dashboard on a video wall which occasionally resets, to keep the browser stable (refreshing it all day causes the history to fill up and it becomes less stable over time).

Is it possible to pass in, say, the font size you want to use, as a URL parameter?

Thanks!

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/25288140-customise-build-monitor-with-url-parameters?utm_campaign=plugin&utm_content=tracker%2F580790&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F580790&utm_medium=issues&utm_source=github).

Colorblind Palette?

I would like to have a color palette that makes it easier (possible?) for color blind folks to see the various details communicated via color in the plugin.

Thanks.

Ken

how to group the jobs ?

How can I group the several jobs in one block ?

I can't figure out by checking the README.md and the configuration of the view, this is the feature exists in radiator view

BUG: Jobs are not saved

Jenkins Version: 1.539 (on Linux O/S)
Build Monitor Plugin version: 1.2+build.64

Every time we selected some jobs and saved/applied - the monitor is empty (no jobs).
When we clicked on the settings button again, our job selection was not saved.

Thanks...

Build marked as failed when multiple builds are in progress

When a build is executing concurrently on different commits, the build is marked as a failure. I believe this is because the code for JobView.lastResult only gets the previous result if the build is running; I think it needs to get the status of the previous completed build instead.

This is related to the improvements from #9 I think, but it's still distinct from them.

I'm sorry I haven't attached a pull request, but I don't have a Java build environment. Thanks for your efforts with this plugin so far.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.