Global Build Stats Plugin

Skip to end of metadata
Go to start of metadata

Plugin Information

Plugin ID global-build-stats Changes In Latest Release
Since Latest Release
Latest Release
Latest Release Date
Required Core
Dependencies
1.3 (archives)
Apr 05, 2012
1.424
Source Code
Issue Tracking
Maintainer(s)
GitHub
Open Issues
Frederic Camblor (id: fcamblor)
Usage Installations 2014-Apr 2992
2014-May 3051
2014-Jun 3095
2014-Jul 3262
2014-Aug 3256
2014-Sep 3386
2014-Oct 3536
2014-Nov 3652
2014-Dec 3635
2015-Jan 3740
2015-Feb 3839
2015-Mar 4127

Global build stats plugin will allow to gather and display global build result statistics.
It is a useful tool allowing to display global jenkins/hudson build trend over time.

Requirements

Since v1.1, Global build stats plugin requires Jenkins 1.398 or higher.

Before v1.0, Global build stats plugin requires Jenkins/Hudson 1.339 or higher.

Installation

To install Global build stats Plugin, Go to the "plugin management" section in the administration Panel.
Latest released version will be available. Install it from there (you should need to restart Jenkins/Hudson after that).

To verify that the plugin is well installed, go to the Administration panel : you should see an icon with mister Jenkins/Hudson and a graph on it :
 or 

Then you can click it and access the global build stats config panel.

Usage

The global build stats main screen is made of different sections :

  • On the left side : Action links
  • On the center : Charts displaying global build statistics & action buttons (update, move & delete)
  • On the bottom : Data initialization

Action links

4 links are availables :

Data Initialization

If you click on this button, all of your existing persisted build results will be gathered.
This is particularly useful to initialize statistics in a first step.
Note that data initialization gathering is only based on "recordable" data. If you frequently purged your job results, data will no longer be available for gathering. Nevertheless, once data has been initialized in global-build-stats, it will be made available even if data is purged (result data is cloned in the global-build-stats.xml file).
Starting from 0.1 (and greater ones), you can perform several data initializations : existing global-build-stats.xml will be merged against eventually new gathered data.

Take into account the following only if you are using a 0.1-alphaX version of global-build-stats plugin (for greater versions, data are merged and thus, never lost) :
Beware : this should be done only once because :

  • Statistics are automatically updated after each build
  • "not recoverable" statistics (for example, if you check the "delete old builds" checkbox on job configuration) will be lost if you click this button

Manage retention strategies

This section is for customizing job build result retention for global-build-stats plugin.
Job build result is the largest data stored in global build stats configuration files (in global-build-stats.xml or global-build-stats/jobResults/*). That is to say, if you're expecting some disk consumption issue, a workaround would be to be stricter on the job build result retention strategies.

Warning
Using retention strategies will delete permanently job build results. Thus, you won't be able to retrieve them.
Take this functionality with care.

Prior to version 1.2, 3 retention strategies are available :

  • Automatically discard results older than X days : as mentioned, by checking this strategy, a daily purge process will be executed to clean oldy job build results stored
  • Keep existing job results only : by checking this strategy, a purge will be triggered only once (when submitting the form) that will ensure every global-build-stats stored build results correspond to an existing (ie not purged) build result.
  • Do not keep build results when they are discarded : by checking this strategy, every time someone will delete a build or a job, corresponding job results stored by global build stats will be deleted. This strategy is different than "keep existing job result only" strategy since it won't affect job results stored in the past. Moreover, it is a strategy that will be triggered regularly (instead of only once for "keep existing job results only").

Build stats Chart Creation / Update

In this popup form, you can create a new Build Stats Chart.

Here are some details on the different parameters :

  • Chart title : Title displayed on top of the Chart
  • Chart size : Width & Height (in pixels) of the created chart
  • Chart Scale : Unit of chart X axis. Either Year, Month, Week, Day or Hour. Difference between "XXX" and "XXX From now" concerns the X axis ranges. If current datetime is 2010/10/27 3:00 PM and selected chart scale is "daily", last date ranges on X axis will be [ 2010/10/26 00:00 AM -> 2010/10/27 00:00 AM ] and [ 2010/10/27 00:00 AM -> 2010/10/27 3:00 PM ]. If "daily from now" were selected, we would have [ 2010/10/25 3:00 PM -> 2010/10/26 3:00 PM ] and [ 2010/10/26 3:00 PM -> 2010/10/27 3:00 PM ]
  • Chart Length : Number of steps (ticks) on X axis. Unit used depends on selected chart scale.
  • Job filtering : Either All jobs (no filtering) or a job name regex (syntax is the same than the one used by Pattern class
  • Node filtering : Either All nodes (no filtering), master node, or a node name regex (syntax is the same than the one used by Pattern class
  • Launcher filtering : Filtering on user who launched the build. System user is used when performing triggered non manual builds, so if you want to display "automatic" (=non manual) builds, check the "System only" radio button. The user name regex syntax is the same than the one used by Pattern class
  • Statuses filtering : Success, Failures, Unstables, Aborted or Not Build builds. Not that "not build" statuses are unchecked by default : this status is special since sometimes, on a successful maven multi module project, module builds are marked as "not build" (unknown reason)
  • Elements displayed on chart. I call these elements "dimensions" :
    • Build statuses : will show build count (or percentage) for each selected build statuses
    • Total build time : will display total cumulated build time on each time ranges. This functionality could be useful to determine the cost of an externalization in a "Jenkins/Hudson as a Service" platform like cloudbees
    • Average build time : will display average cumulated build time on each time ranges

All fields are mandatory. Chart's width, height & length should be integers.
If at least 1 server-side validation fails, form will not be "submittable".

Before submitting the form, you can have a look at the future chart which will be displayed by clicking the "overview" button.

Build stats Chart display

This section displays every persisted Chart Configurations.
You can, too, edit, delete or move up/down these graphs.
Graphs are created using REST-like URL so that you can export this URLs into your favourite Portal or CMS (or Jenkins/Hudson dashboard).
2 chart examples can be seen below :

Last chart displays the 3 available dimensions altogether (result counts, total build time & average build time).

By clicking a results counts region, you will be redirected on the build search engine screen.
See the Build Search engine section for further details.

Near every build chart, you'll have at least two button : edit & delete buttons.
Depending of the placement of your chart, you'll be able to "move up/down" the chart.

Notes about user & node filtering

Warning
Don't expect to have relevant results just after an upgrade between :
  • pre and post 0.4 versions for node filtering
  • pre and post 1.0 versions for user filtering

When migrating, only not purged data (concerning node & user having launched the build) will be recorded.
That is, "old" data (such as builds executed a few weeks ago) won't be available.

Starting from your plugin upgrade, full data will obviously be recorded.

Notes about durations displayed when migrating to v0.5

Warning
For the same reasons as above, don't expect to have relevant results just after an upgrade between pre and post 0.5 versions : you'll have to wait a few times in order to have sufficient data amount to calculate total & average build duration.

Build search engine

The build search engine is accessible by clicking a build result region on a chart.
It will provide search criteria to query the global-build-stats build results on different ways : result status, job name, node name and date ranges.

Result sort order can be changed by clicking the table headers.
If build result has not been purged, a clickable link will be displayed to navigate through the console output & the detailed build result.

Bonus track : Global-build-stats JSON API

A detailed section has been created to describe how to retrieve global-build-stats data from Jenkins/Hudson standard JSON & REST API.

Product backlog

Known issues

Future version(s)

Identified issues :
issue #7241: Special characters in chart title ("é" for example) are not well filling textfields in edit form
Fix legend item sorting (for now, sort depends on alphabetical order... that's why statuses are prefixed with "1), 2).."
Fix date displayed on build search view, due to yui calendars
Rename persisted node names in global-build-stats.xml after node is renamed

Features :
Test global build stat behaviour under IE & Safari
Cache chart renderings (provide a checkbox in the buildStatConfiguration, allowing to enable chart caching with a given refresh rate based on selected time scale). Chart rendering will cache chart in-memory (thus it will consume a little bit more memory) but will reduce the CPU used when displaying the chart. It feets particularly well if you decide to "share" your chart with lots of users that will want to display it (on the jenkins/hudson welcome screen for example)
In build search results, allow to limit number of results (radio button allowing "unlimited" and "limited to XXX results")
Allow to select build start or build end for stats gathering (build end could be calculated with build start + duration). For now, we use only build start
(if possible) Allow to click on a date to display date builds (no matter the build result)
If possible, provide tooltips on chart, displaying the 10 first job names matching with the current hovered region

Tasks :

Releases

1.3 (April, 5th, 2012)

Improvements

  • Provided action link to the retention strategy section
  • issue #9088 : Fixed stack ordering of build statuses in a more natural manner : not build > failures > aborted > unstables > success
  • Hierarchical project support

1.2 (August, 25th, 2011)

Improvements

  • Related to issue #10607 : Largely improved data serialization by :
    • Saving things in a separate thread (jobs are not hanging anymore after completing, due to data saving)
    • Job build results are now sharded into monthly files so that save will be performed in a constant time
  • Allowing to define build result retention strategies, which will purge stored job build results and lower job build result filesize on filesystem. See the Manage retention strategies section section for further informations.

Bugs

  • issue #10563 Fixed NoSuchElementException when no job result was gathered
  • issue #10607 Jenkins jobs hangs when finished

1.1 (August, 3rd, 2011)

Tasks

  • Changed Global build stats logo to be jenkins compliant

1.0 (November, 14th, 2010)

Fixed bugs

  • Internationalized week & day labels on charts

Improvements

  • Recorded user who launched the build, displaying it on build search engine view
  • Provided filter on user who launched the build (will allow to filter on build launched by SYSTEM only to skip manually launched builds)
  • Provided radio button allowing to filter on master node only
  • Check if build result has been performed at least once... if not, automatically perform a data recording
  • Externalized javascript functions in JS cacheable files
  • Simplified data migration API

Tasks

0.5 (September, 23th, 2010)

Improvements

  • Display total & average builds duration on charts
  • Node name filtering

0.4.1 (September, 16th, 2010)

Fixed bugs

  • issue #7476: Jelly exception on plugin manager screen ("installed" tab)

0.4 (September, 15th, 2010)

Fixed bugs

  • issue #7240: Don't provide link to console in build search results if build informations have been deleted

Improvements

  • Recording additionnal data : job build duration & job build node name (only used in the build search screen for now !)
  • Allow to change y-axis unit to percent
  • Allow to change chart id (for security concerns)
  • Internationalized plugin
  • Provide API informations regarding buildStatConfig (/plugin/global-build-stats/api/json?depth=2&buildStatConfigId=XXX)
  • Display build duration on the build search screen

Tasks

  • Create a JIRA component for global build stats : Issues can be seen here

0.3.1 (August, 18th, 2010)

Fixed bugs

  • In some versions of chrome, "delete" JS method seems to no be allowed (and was, then, resulting in JS syntax errors).
    Global build stats has been tested only with firefox & chrome. Tests will be made under safari & IE soon.

0.3 (August, 17th, 2010)

Fixed bugs

  • jobFilter property was badly persisted if radio button was let to "ALL" by default (+ provided data migration for previous versions)
  • Fixed encoding of special characters ("é" for example) in chart title

Improvements

  • Provided data migration tool API to migrate from different versions of the persisted plugin data (it will be easier to migrate from one version to another)
  • Optimized global-build-stats.xml file size (1.5Mo for 8600 build results) => Reduced by half thanks to xstream aliases
  • UI Greatly improved by doing AJAX calls :
    • Move up/down in chart listing are made with AJAX (no more refresh !)
    • Create/Edit/Delete in chart listing are made with AJAX (no more refresh !)
  • Allow an overview of a chart in the new Create/Edit popup form
  • All charts are given a unique identifier + calling the /plugin/global-build-stats/showChart?buildStatId= url (instead of /plugin/global-build-stats/showChart?widht=&height=etc..) will have the security checks de-activated
    => You can now share your charts without being redirected on a 403 error
    Url /plugin/global-build-stats/showChart remains accessible (and is used for chart overview), but there, security checks are performed (you must be an administrator to reach the chart)
  • Provided a link, in build search results, to direct console output for a build number
  • Switched "unstables" and "aborted" colors (unstables:pink=>yellow, aborted:yellow=>pink) to fit with standard jenkins/hudson display + changed display order + changed chart background color (yellow area will be more visible)

Tasks

  • Refactored GlobalBuildStatPlugin into several new layers : business, validation (lowers complexity of GlobalBuildStatPlugin class)

0.2 (July, 4th, 2010)

Fixed bugs

  • Bug: Hour reset lead to 00h instead of 12h

Improvements

  • Global build search engine allowing to select several search criteria concerning build results and display search results
  • Chart can be clicked : it will list selected builds category on clicked year/month/week/day/hour
  • Change date displayed on chart depending on selected scale (time axis' height is largely lowered !)

0.1 (June, 13th, 2010)

Fixed bugs

  • Fixed rootUrl problem in checkUrls AJAX validation
  • Fixed vertical axis size in charts
  • Synchronized blocks whenever data are recorded in order to prevent plugin from ConcurrentModificationException (plugin is now thread safe !)
    Note: If you have $HUDSON_HOME/*.tmp files looking like your global-build-stats.xml file, you can delete them !
  • "\" are now allowed in your job name regexes

Improvements

  • Jenkins/Hudson version 1.339 is now required
  • Secured chart listing screen : Administer rights needed
  • Added HOURLY_FROM_NOW, DAILY_FROM_NOW, WEEKLY_FROM_NOW, MONTHLY_FROM_NOW and YEARLY_FROM_NOW chart scales.
    Beware : pre-1.0 YEARLY, MONTHLY and WEEKLY scales were acting the same as post-1.0 YEARLY_FROM_NOW, MONTHLY_FROM_NOW and WEEKLY_FROM_NOW.
    If you want to keep your chart as if it were in pre-1.0, you should update these scales !
  • Improved color used
  • Provided backward compatibility of BuildStatConfiguration (with 1.0-alpha1 release)
  • Data initialization is now made via AJAX submission
  • Data initialization now merges read data with existing data : you won't lose data anymore !
  • "not build" status is unchecked by default
  • Added icons instead of buttons for chart actions (delete/edit/move up/move down)

0.1-alpha4 (March, 13th, 2010)

AJAX Form validation enabled

0.1-alpha3 (March, 1st, 2010)

Fixed bug : If checkbox are unchecked, build stat config is not added
Some precision : if chart doesn't appear after form submission, check your fields : all are mandatory (except for checkboxes which can be unchecked), width & heigth & length should be integers

0.1-alpha2 (March, 1st, 2010)

Minimum Jenkins/Hudson version downgraded from 1.339 to 1.321
Chart persistence implemented.
Create/Update/Delete multiple chart build configurations.
Added job name filtering.
Changed displayed date pattern on chart.
Server-side form validation is done .... but nothing is displayed on the user side (due of lack on knowledge on form validation ... see 0.1 roadmap to see how this will be handled in the future)

0.1-alpha1 (February, 21th, 2010)

First release.
Contained only a unique chart and the possibility to initialize build stats from existing build results.
Chart is contructed in a RESTly way that is to say you can provide GEt parameters to the chart.
No Chart persistence implemented.

Greetings to our sponsors

I'm a proud user of .
Feel free to download and test this IDE, it's worth a try !

Labels

plugin-report plugin-report Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Apr 27, 2010

    Sagar Khushalani says:

    Really good plugin. My favourite part is the fact that one can use the URL to cr...

    Really good plugin. My favourite part is the fact that one can use the URL to create live exports of the graphs (I have them in the system message, so anyone who comes to the home page can see the graphs).

    Thanks!

  2. Apr 27, 2010

    fcamblor - says:

    You're welcome ! But beware with this : Chart rendering can take CPU ... if y...

    You're welcome !
    But beware with this :

    • Chart rendering can take CPU ... if you have lots of users displaying the chart at the same time, hudson will complain
    • In future 0.1 version, security will be activated on urls : if user doesn't have administrative rights, he won't be able to see the chart

    Eventually, I could add some checkbox allowing to publish charts to everyone, even if they don't have administrative rights

  3. Jun 11, 2010

    gpkirk - says:

    Awesome plugin.  I can't wait to try the live exports on the system message...

    Awesome plugin.  I can't wait to try the live exports on the system message.  For me, I did notice I needed to manually update the 'form.jelly' config file so that the 'checkUrl' values began with /hudson/plugin instead of /plugin.  Otherwise, I got HTTP 404 errors displaying for each of the field validation labels.

    1. Jun 11, 2010

      fcamblor - says:

      Yup this reminds me an issue I fixed some weeks ago I haven't had much time to...

      Yup this reminds me an issue I fixed some weeks ago

      I haven't had much time to work on the plugin recently ... this is too bad since first 0.1 release is almost here !

      I'll try to work on it this week end.

      Cheers
      Frederic

  4. Jul 28, 2010

    Marco Renz says:

    I really like your plugin. It is very useful. Many Thanks! One minor issue: Cou...

    I really like your plugin. It is very useful. Many Thanks!

    One minor issue: Could the charts use the same colors as normally used for the status, e.g. unstable=yellow?

    1. Jul 29, 2010

      fcamblor - says:

      For sure ! I'll try to package this in 0.3

      For sure !

      I'll try to package this in 0.3

    2. Aug 17, 2010

      fcamblor - says:

      Your request to change colors has been packaged in v0.3 of the plugin

      Your request to change colors has been packaged in v0.3 of the plugin

      1. Sep 02, 2010

        Marco Renz says:

        It's working great. Thanks!

        It's working great. Thanks!

  5. Sep 17, 2010

    Marty Chen says:

    Great plugin. I am using version 0.4. Is it possible to publish this chart in Da...

    Great plugin. I am using version 0.4. Is it possible to publish this chart in Dashboard? If yes, how can I do this? Thanks.

    1. Sep 22, 2010

      fcamblor - says:

      Hi ! Image urls displayed (with buildStatId GET parameter) are copy/pastable an...

      Hi !

      Image urls displayed (with buildStatId GET parameter) are copy/pastable anywhere : no security check will be applied on them

      Since 0.3, I consider you can share chart by sharing buildStatId identifier ("a la" google documents) ... that's why I provided functionnality to change this identifier if you want to "unshare" your chart with others

  6. Nov 17, 2010

    kdszh says:

    Hi !   I have a problem when create a chart. when I click the "Create ...

    Hi !

      I have a problem when create a chart. when I click the "Create new chart" button,the progress "Loading...please wait" never stop (please see the image below)

      What's the problem ?

      Hudson version:1.383        Global Build Stats version: 1.0

     

    1. Nov 17, 2010

      kdszh says:

      sorry, I change my browser to "Chrome" ,it works well .  maybe it's a prob...

      sorry, I change my browser to "Chrome" ,it works well . 

      maybe it's a problem about my previous IE setting.

      close. :)

      1. Nov 18, 2010

        fcamblor - says:

        I'm interested in your bug. If you can go further and reproduce it, giving IE ve...

        I'm interested in your bug.
        If you can go further and reproduce it, giving IE version (with your service pack) and, eventually, error shown in a debug bar, it would be great

        1. Sep 08, 2011

          jie sun says:

          I am seeing the same problem now. I am using IE8, I installed Global build stats...

          I am seeing the same problem now. I am using IE8, I installed Global build stats plugin 1.2 on  Jenkins 1.410. It's hanging the IE when I was trying to save a new chart. Then I tried to access my Jenkins Global build stats page from Firefox and Chrome, it's hanging as well. The only difference in Firefox is that it will give an error message as below and shutdown Firefox shortly after that. Now I don't know what to do to make the global build stats page working again.. I  tried to disable the Global build stats plugin and restart Jenkins and re-enable the pluging but it's still hanging. Is there any way that I can get out of the hanging status? Global build stats page is not working any more.

          1. Sep 10, 2011

            fcamblor - says:

            Ok, could you mind testing this with something like Sauce builder (see http://sa...

            Ok, could you mind testing this with something like Sauce builder (see http://saucelabs.com/ondemand) and providing me the according selenese test HTML I could use to reproduce the problem ?

            Two possible cases :

            • ap-ci-1:8080 is accessible from the internet : in this case you will be able to directly record your test case using the sauce builder plugin
            • ap-ci-1:8080 is not accessible from the internet : you should use Sauce connect (http://saucelabs.com/docs/sauce-connect) to access your private network, then use Sauce builder

            When dealing with sauce builder, provide the same client environnment (os + browser) you are on when having the bug

            Don't forget to anonymize your test (remove jenkins credentials) and send it to me (fcamblor at gmail.com).

  7. Nov 18, 2010

    Rasmus Bergstroem says:

    Hi, this ttols seems like just the thing i need, however i am fairly new to Huds...

    Hi, this ttols seems like just the thing i need, however i am fairly new to Hudson, so i am not sure that it can actually do what i need it to do.

    At work we have several Hudson build machines - one for each project. We would like to have a single monitor to show results and trends for all the different build machines.

    To implement that I have set up another Hudson machines with the purpose of monitoring the others.

    What i would like to know is if your tool are capable of doing this ? Can it monitor other Hudsons ? And if it can, how do i set it up to do it ?

    Your help is greatly appreciated

    Rasmus Bergstrøm

    1. Nov 18, 2010

      fcamblor - says:

      Are you talking about hudson slaves when you're talking about "hudson machines" ...

      Are you talking about hudson slaves when you're talking about "hudson machines" ?

      If yes, then "yes you can"
      By default, a chart is gathering data from every hudson nodes. But since v0.5, you can display results on specifics nodes (by providing a regex on your node's name).

      1. Nov 19, 2010

        Rasmus Bergstroem says:

        Unfortunately the different buildservers are not set up as slaves/masters, but s...

        Unfortunately the different buildservers are not set up as slaves/masters, but stand alone build machines.

        1. Nov 19, 2010

          fcamblor - says:

          I won't be able to do anything for you then. The Hudson plugins architecture is ...

          I won't be able to do anything for you then.
          The Hudson plugins architecture is not made to interoperate between several hudson instances if they are not master/slaves ones.

          1. Nov 19, 2010

            Rasmus Bergstroem says:

            Okay. Thank you for your help and swift answer :)

            Okay. Thank you for your help and swift answer :)

  8. Apr 28, 2011

    Daniel Tkatch says:

    When I export the image by inserting an <img> element with a URL as seen b...

    When I export the image by inserting an <img> element with a URL as seen below e.g. in a view description I cannot click the build result regions on the chart. Is there any way to export a clickable/mapped graph image?

    <img
    id="img_0T4qAca2NIA*JfxldYYnDVfCG1SC1$PU"
    src="/plugin/global-build-stats/showChart?buildStatId=0T4qAca2NIA*JfxldYYnDVfCG1SC1$PU&amp;time=1303984244424"
    usemap="#map_0T4qAca2NIA*JfxldYYnDVfCG1SC1$PU">
    
    1. Apr 28, 2011

      fcamblor - says:

      Unfortunately, I think you cannot do such thing... or it will be a bit tough (im...

      Unfortunately, I think you cannot do such thing... or it will be a bit tough (image map is retrieved via an AJAX request on /plugin/global-build-stats/createChartMap?buildStatId=<your id>)

      Moreover, clickable links are landing in the search engine page... which is normally accessing only for administrators.
      Are every Users, seeing the image, administrators ?

      1. Apr 28, 2011

        Daniel Tkatch says:

        Ignoring the access issues (we do not limit access to non-administrators), could...

        Ignoring the access issues (we do not limit access to non-administrators), could you still suggest a possible HTML code that would retrieve a mapped chart? or at least a suggestion from which I can assemble a working version myself? That would be greatly appreciated!

        1. Apr 28, 2011

          fcamblor - says:

          I don't have enough time to POC anything, but I can give you the key things : ...

          I don't have enough time to POC anything, but I can give you the key things :

          • Insert following code :
            <img
            id="img_0T4qAca2NIA*JfxldYYnDVfCG1SC1$PU"
            src="/plugin/global-build-stats/showChart?buildStatId=0T4qAca2NIA*JfxldYYnDVfCG1SC1$PU&amp;time=1303984244424"
            usemap="#map_0T4qAca2NIA*JfxldYYnDVfCG1SC1$PU"/>
            <div id="map_0T4qAca2NIA*JfxldYYnDVfCG1SC1$PU_container"></div>
            
          • Then, make an AJAX call to /plugin/global-build-stats/createChartMap?buildStatId=0T4qAca2NIA*JfxldYYnDVfCG1SC1$PU
            It will return something like :
            <map id="map" name="map">
            <area shape="poly" coords="679,453,616,473,616,473,679,453,679,453" href="buildHistory?jobFilter=ALL&start=1301608845639&end=1303997865639&successShown=true&failuresShown=false&unstablesShown=false&abortedShown=false&notBuildShown=false&nodeFilter=ALL&launcherFilter=ALL" alt=""/>
            <area shape="poly" coords="553,494,616,473,616,473,553,494,553,494" href="buildHistory?jobFilter=ALL&start=1298934045639&end=1301608845639&successShown=true&failuresShown=false&unstablesShown=false&abortedShown=false&notBuildShown=false&nodeFilter=ALL&launcherFilter=ALL" alt=""/>
            ...
            </map>
            
          • Insert the resulting response into the map_0T4qAca2NIA*JfxldYYnDVfCG1SC1$PU_container innerHTML
          • Change the map's name attribute (name="map") to name="map_0T4qAca2NIA*JfxldYYnDVfCG1SC1$PU"

          It should work

          You should have, in the end, something like :

          <img
          id="img_0T4qAca2NIA*JfxldYYnDVfCG1SC1$PU"
          src="/plugin/global-build-stats/showChart?buildStatId=0T4qAca2NIA*JfxldYYnDVfCG1SC1$PU&amp;time=1303984244424"
          usemap="#map_0T4qAca2NIA*JfxldYYnDVfCG1SC1$PU"/>
          <div id="map_0T4qAca2NIA*JfxldYYnDVfCG1SC1$PU_container">
          <map id="map" name="map_0T4qAca2NIA*JfxldYYnDVfCG1SC1$PU">
          <area shape="poly" coords="679,453,616,473,616,473,679,453,679,453" href="buildHistory?jobFilter=ALL&start=1301608845639&end=1303997865639&successShown=true&failuresShown=false&unstablesShown=false&abortedShown=false&notBuildShown=false&nodeFilter=ALL&launcherFilter=ALL" alt=""/>
          <area shape="poly" coords="553,494,616,473,616,473,553,494,553,494" href="buildHistory?jobFilter=ALL&start=1298934045639&end=1301608845639&successShown=true&failuresShown=false&unstablesShown=false&abortedShown=false&notBuildShown=false&nodeFilter=ALL&launcherFilter=ALL" alt=""/>
          ...
          </map>
          </div>
          
          1. Oct 18, 2011

            Daniel Tkatch says:

            Finally, I found time to implement your suggestion and it worked! Thanks!...

            Finally, I found time to implement your suggestion and it worked! Thanks!

            What I did was putting the following in my test view description field:

            <script type="text/javascript">
                function appendImageMap() {
                    var xmlhttp;
                    xmlhttp=new XMLHttpRequest();
                    xmlhttp.onreadystatechange = function() {
                        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                            var imageMap = xmlhttp.responseText;
                            imageMap = imageMap.replace(/href=\"(.*)\"/gm, "href=\"\/plugin\/global-build-stats\/$1\"");
                            document.getElementById("map_container").innerHTML=imageMap;
                        }
                    }
                    xmlhttp.open("GET","/plugin/global-build-stats/createChartMap?buildStatId=YOUR_GRAPH_ID",true);
                    xmlhttp.send();
                }
            </script>
            
            <img id="graph" src="/plugin/global-build-stats/showChart?buildStatId=YOUR_GRAPH_ID" usemap="#map" onmouseover="appendImageMap(); this.value=null;">
            
            <div id="map_container"></div>
            
            1. Oct 18, 2011

              fcamblor - says:

              Great :) I noticed you encountered a problem in the href links generated by /pl...

              Great :)

              I noticed you encountered a problem in the href links generated by /plugin/global-build-stats/createChartMap url.
              Maybe could you file an improvement in jira to allow to pass a root url as a parameter of createChartMap (and more generally, use absolute url as the default value for this root url) ... it would allow to skip things like your replace on the clientside.

              In the end, I don't thing calling appendImageMap() on the onmouseover is a good idea. This call should be made only once (at page load time) and not every time the mouse enters the image.

              1. Oct 18, 2011

                Daniel Tkatch says:

                Improvement issue filed: JENKINS-11384. To call my function at page load time I...

                Improvement issue filed: JENKINS-11384.

                To call my function at page load time I would have to access Jenkins' <body> tag from the view's description to use the onload event. I assumed I cannot do that. Can I? Anyhow, the map is retrieved only once because the value of onmouseover is overwritten by this.value=null when called for the first time.

                So it solves the issue of showing the graph with the correct imagemap elsewhere on the same Jenkins. Another question I would have: is possible to display the graph completely remotely? A friend of mine needs that and runs at the moment at the following problem:

                XMLHttpRequest cannot load http://host1:8080/plugin/global-build-stats/createChartMap?buildStatId=GRAPH_ID. Origin http://host2:8080 is not allowed by Access-Control-Allow-Origin.
                

                Do you think this can be solved too?

                1. Oct 18, 2011

                  fcamblor - says:

                  Thanks for the issue. I didn't noticed the this.value=null; .. tricky :-) You c...

                  Thanks for the issue.

                  I didn't noticed the this.value=null; .. tricky :-)
                  You can add a load time event by using following snippet :

                  YAHOO.namespace("your.namespace");
                  
                  
                  
                  YAHOO.your.namespace.init = function() {
                  
                      alert('blah');
                  }
                  
                  
                  YAHOO.util.Event.onDOMReady(YAHOO.your.namespace.init);
                  

                  For your friend's access, I don't see any global-build-stats related limitations.
                  What is the url he is trying to access ? Are you sure he can access it directly ?
                  For example, if your Jenkins instance is behind an apache httpd server, he won't be able to access jenkins directly (or he will have to translate the url to use the apache one).

  9. Mar 07, 2012

    Daniel Tkatch says:

    Recently, after I restart Jenkins the newer builds disappear from the graph. Onl...

    Recently, after I restart Jenkins the newer builds disappear from the graph. Only some older builds are visible. Any idea what might be causing this?

    Update: I noticed that it's month dependent. The February builds stay on the graph and the once from this month disappear after Jenkins restarts. I wonder whether the file global-build-stats/jobresults/jobResults-2012-03.xml gets somehow deleted during a restart. Hmm...

    1. Mar 26, 2012

      fcamblor - says:

      No idea on this point. Does the jobResults-2012-03.xml really disappeared ?

      No idea on this point.
      Does the jobResults-2012-03.xml really disappeared ?

      1. Apr 12, 2012

        Daniel Tkatch says:

        The current month's jobResults-*.xml is seems to be overwritten with a blan...

        The current month's jobResults-*.xml is seems to be overwritten with a blank one when Jenkins is starting.

  10. Mar 26, 2012

    Daniel Tkatch says:

    Sometimes, when searching on Global Build Search I get the following except...

    Sometimes, when searching on Global Build Search I get the following exception:

    Status Code: 500
    Exception:
    Stacktrace:
    
    java.lang.NumberFormatException: For input string: ""
    	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    	at java.lang.Long.parseLong(Long.java:431)
    	at java.lang.Long.parseLong(Long.java:468)
    	at hudson.plugins.global_build_stats.FromRequestObjectFactory.createBuildHistorySearchCriteria(FromRequestObjectFactory.java:15)
    	at hudson.plugins.global_build_stats.GlobalBuildStatsPlugin.doBuildHistory(GlobalBuildStatsPlugin.java:317)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:288)
    	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:151)
    	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:90)
    	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:111)
    	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
    	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:563)
    	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:648)
    	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:563)
    	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:648)
    	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:477)
    	at org.kohsuke.stapler.Stapler.service(Stapler.java:159)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
    	at winstone.ServletConfiguration.execute(ServletConfiguration.java:248)
    	at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
    	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376)
    	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:95)
    	at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:185)
    	at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:159)
    	at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:86)
    	at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:84)
    	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:98)
    	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:87)
    	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
    	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
    	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
    	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
    	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
    	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 winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
    	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
    	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
    	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
    	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
    	at winstone.RequestDispatcher.forward(RequestDispatcher.java:331)
    	at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:245)
    	at winstone.RequestHandlerThread.run(RequestHandlerThread.java:148)
    	at java.lang.Thread.run(Thread.java:662)
    
    1. Mar 26, 2012

      fcamblor - says:

      Can you please file an issue in JIRA for this point ? Thanks :-)

      Can you please file an issue in JIRA for this point ? Thanks :-)

  11. May 08, 2012

    Laurentius Purba says:

    Initially I had hudson installed, and then I moved to jenkins, by downloading je...

    Initially I had hudson installed, and then I moved to jenkins, by downloading jenkins.war and renamed it to hudson.war and copied over to tomcat webapps directory.

    The version installed is 1.452.

    I saw the requirements for this plugin before installing it. I was able to install this, and created a "last 6 months" stat, and I can see the graph.

    The issue is clicking the graph will result this error:

    javax.servlet.ServletException: java.lang.NoClassDefFoundError: jenkins/model/Jenkins
    	org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:603)
    	org.kohsuke.stapler.Stapler.invoke(Stapler.java:646) ...
    

    Did I miss something? Can somebody give me pointers on how to resolve this issue?

    Thanks!

    -Laurent

    1. May 08, 2012

      fcamblor - says:

      Hi Laurent, I installed 1.452 and global build stats, but I can't reproduce you...

      Hi Laurent,

      I installed 1.452 and global build stats, but I can't reproduce your issue.
      Could you please detail a bit more the stacktrace you caught ?

      Regards,

      Frédéric

      1. May 09, 2012

        Laurentius Purba says:

        Hi Frédéric, Thanks for your response. I use Firefox as my browser As yo...

        Hi Frédéric,

        Thanks for your response.

        I use Firefox as my browser

        As you requested:

         HTTP Status 500 -
        
        type Exception report
        
        message
        
        description The server encountered an internal error () that prevented it from fulfilling this request.
        
        exception
        
        javax.servlet.ServletException: java.lang.NoClassDefFoundError: jenkins/model/Jenkins
        	org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:603)
        	org.kohsuke.stapler.Stapler.invoke(Stapler.java:646)
        	org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:233)
        	org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
        	org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:561)
        	org.kohsuke.stapler.Stapler.invoke(Stapler.java:646)
        	org.kohsuke.stapler.Stapler.invoke(Stapler.java:477)
        	org.kohsuke.stapler.Stapler.service(Stapler.java:159)
        	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        	hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:94)
        	org.hudsonci.servlets.internal.ServletRegistrationFilterAdapter.doFilter(ServletRegistrationFilterAdapter.java:180)
        	org.hudsonci.servlets.internal.ServletRegistrationFilterAdapter.doFilter(ServletRegistrationFilterAdapter.java:148)
        	hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:97)
        	org.hudsonci.servlets.internal.ServletRegistrationFilterAdapter.doFilter(ServletRegistrationFilterAdapter.java:180)
        	org.hudsonci.servlets.internal.ServletRegistrationFilterAdapter.doFilter(ServletRegistrationFilterAdapter.java:148)
        	hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:97)
        	hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:86)
        	hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
        	hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        	org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        	org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        	org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        	org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        	org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        	org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
        	hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:66)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        	hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
        	hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
        	hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
        
         
        
        root cause
        
        java.lang.NoClassDefFoundError: jenkins/model/Jenkins
        	hudson.plugins.global_build_stats.JobBuildResultFactory.createJobBuildSearchResult(JobBuildResultFactory.java:38)
        	hudson.plugins.global_build_stats.business.GlobalBuildStatsBusiness.searchBuilds(GlobalBuildStatsBusiness.java:119)
        	hudson.plugins.global_build_stats.GlobalBuildStatsPlugin.doBuildHistory(GlobalBuildStatsPlugin.java:319)
        	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        	java.lang.reflect.Method.invoke(Method.java:597)
        	org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:282)
        	org.kohsuke.stapler.Function.bindAndInvoke(Function.java:149)
        	org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:88)
        	org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:103)
        	org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
        	org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:561)
        	org.kohsuke.stapler.Stapler.invoke(Stapler.java:646)
        	org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:233)
        	org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
        	org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:561)
        	org.kohsuke.stapler.Stapler.invoke(Stapler.java:646)
        	org.kohsuke.stapler.Stapler.invoke(Stapler.java:477)
        	org.kohsuke.stapler.Stapler.service(Stapler.java:159)
        	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        	hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:94)
        	org.hudsonci.servlets.internal.ServletRegistrationFilterAdapter.doFilter(ServletRegistrationFilterAdapter.java:180)
        	org.hudsonci.servlets.internal.ServletRegistrationFilterAdapter.doFilter(ServletRegistrationFilterAdapter.java:148)
        	hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:97)
        	org.hudsonci.servlets.internal.ServletRegistrationFilterAdapter.doFilter(ServletRegistrationFilterAdapter.java:180)
        	org.hudsonci.servlets.internal.ServletRegistrationFilterAdapter.doFilter(ServletRegistrationFilterAdapter.java:148)
        	hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:97)
        	hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:86)
        	hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
        	hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        	org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        	org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        	org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        	org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        	org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        	org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
        	hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:66)
        	hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        	hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
        	hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
        	hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
        
         
        
        note The full stack trace of the root cause is available in the Apache Tomcat/6.0.30 logs.
        
        
        Apache Tomcat/6.0.30
        

        Thanks!

        -Laurent

        1. May 15, 2012

          Laurentius Purba says:

          Anybody that can help me with this issue? Thanks! -Laurent

          Anybody that can help me with this issue?

          Thanks!

          -Laurent

  12. Nov 29, 2012

    Stephane Odul says:

    In my opinion there is an design issue that prevents me from using this: th...

    In my opinion there is an design issue that prevents me from using this: the global-build-stats.xml file.

    The issue is that this file grows very large over time, and xml is not a good format for something that need 'random' updates. In my previous experience the files was several hundred megs larges, being rewritten several times per minute during peak hour and brought the Master's IO to a crawl. The proper fix is to use a DB rather than XML, hsqldb is probably a good choice.

    I would love to use the plugin, but can't because of the current design.

    1. Oct 14, 2013

      fcamblor - says:

      I don't have the time to feed the persistency troll ... but I would suggest you ...

      I don't have the time to feed the persistency troll ... but I would suggest you to stop using Jenkins since this is the way the persistence is made among every data, and which allows to easily transmit data amongst nodes.

      The global-build-stats.xml is not intended to grow : this file is intended to contain the graphs configuration information (which should not change really often)
      The part you're complaining, I suppose, is about the JENKINS_HOME/global-build-stats/jobresults/*.xml monthly result files which could be big in the end of the month if you're running lots of jobs on your instance.

      A possibility would be to save results on a daily manner (instead of a monthly one), but this will have a cost when displaying global build stats charts.
      If you have better ideas, I'm open to pull discussions/requests.

  13. Dec 31, 2012

    vishal sahasrabuddhe says:

    Hi,        I am trying to use this plugin, after ...

    Hi,

           I am trying to use this plugin, after installing i was trying to use it but page is always "loading .....please wait". This is for Firefox browser.

    When i tried using chrome then i got error saying "page became unresponsive" and then it says "there is something went wrong and reload the page".

    At the end i am not able to use this plugin.

    1. Jan 03, 2013

      vishal sahasrabuddhe says:

      help from anybody?

      help from anybody?

      1. Mar 13, 2013

        Martin Woit says:

        i switched to nconf, icinga, pnp4nagios and the opportunity of feed subscription...

        i switched to nconf, icinga, pnp4nagios and the opportunity of feed subscription because the plugin is too buggy for daily use

  14. Oct 11, 2013

    Queenie Chow says:

    Hi, I'm using Hudson 2.2.0, after i installed the Global Build Stats plugin and...

    Hi,

    I'm using Hudson 2.2.0, after i installed the Global Build Stats plugin and gather the data initialization, it seems like only the jobresults  data is being collected.  When i tried to click the build result region on a chat, i received a 500 error.  It seems like the buildHistory directory and data is not being collected upon data initialization.  Please advise.

    Thanks,

    1. Oct 14, 2013

      fcamblor - says:

      I won't support Hudson branch : this represents too much work for me. Switch to...

      I won't support Hudson branch : this represents too much work for me.

      Switch to jenkins, or don't use the plugin.

  15. May 15, 2014

    Yagang Zheng says:

    Hi, do the total build time include the waiting resource time?

    Hi, do the total build time include the waiting resource time?

    1. May 15, 2014

      fcamblor - says:

      Hi, I dunno. I rely on Run.getDuration() when creating job build result ...

      Hi,

      I dunno.

      I rely on Run.getDuration() when creating job build result

      I don't know if it takes into consideration the waiting time before the build starts, but I would find it natural to not take it into consideration.

      1. May 16, 2014

        Yagang Zheng says:

        Do you mean the total build time doesn't  include the waiting resource time...

        Do you mean the total build time doesn't  include the waiting resource time?