Gnome Panel Status Widget

Screenshot


Detailed build status is shown as tooltip

Installation

  • save hudson-applet.rb under /usr/lib/gnome-panel/ and make it executable (chmod 755)
  • save hudson-applet.server under /usr/lib/bonobo/servers/
  • ~# sudo apt-get install ruby ruby-gnome2 rubygems1.8 libfeedparser-ruby1.8
  • ~# gem install atom
  • log out and back in
  • Use right-click on the panel to add the "Hudson Build Status" to your panel
  • On first start a dialog pops up to ask for hudson's RSS feed (e.g. "http://build.mydomain.com:8080/hudson/rssLatest")
    and for the update interval in milliseconds - configuration is saved in file $HOME/.gnome2/hudson-applet

Labels:

Enter labels to add to this page:
Wait Image 
Looking for a label? Just start typing.
  1. Jan 05, 2011

    Yuval Shavit says:

    This is very helpful, thanks! I made two small modifications to the hudson-...

    This is very helpful, thanks!

    I made two small modifications to the hudson-applet.rb script:

    • our Hudson RSS feed has a slightly different format for failures, so I updated the regex
    • our Hudson RSS feed puts a ? for pending builds; I made those turn the circle orange

    In case that's something you'd also find helpful, here's the diff:

    --- hudson-applet.rb	2011-01-05 10:59:14.482586000 -0500
    +++ hudson-applet.rb	2011-01-04 12:36:59.142968001 -0500
    @@ -147,9 +147,13 @@
       def get_success_indicator(buildDataHash)
         success = true
         text = ''
    +    dontknow=false
         buildDataHash.each { |buildName, buildData|
           text += "#{buildName}: " + " #" + buildData.getInfo().first + "\n"
    -      if buildData.getInfo().first =~ /FAILURE/
    +      if buildData.getInfo().first =~ /\?/
    +          success = false
    +          dontknow = true
    +      elsif buildData.getInfo().first =~ /FAILURE/ or buildData.getInfo().first =~ /broke/
              success = false
           end
    
    @@ -158,9 +162,13 @@
         @tips.set_tip(self, text, nil)
    
         if success
    -	@face.set_fill_color("green")
    +	    @face.set_fill_color("green")
         else
    -        @face.set_fill_color("red")
    +        if dontknow
    +            @face.set_fill_color("orange")
    +        else
    +            @face.set_fill_color("red")
    +        end
         end
       end