Jenkins build light on Windows, with Blinky

10 Dec 2013

The last few projects I was on had a big visual dashboard, but sometimes a complementary build light adds a lot of impact, with clear you-see-me-from-anywhere feedback. Setting up a Jenkins build light on Windows required quite a bit of research though, so here's the steps I had to take to make it all work:

Find a light

I have used Delcom lights a lot in the past. They work well but unfortunately they're also amazingly expensive at $90 a piece!! However we're in luck: the equally cool-looking Webmail Notifier is available for around $10, and works just as well.

Delcom VS webmail notifier

USB drivers

On Windows, you'll need to replace the default USB driver with libusbK. This is a modern kernel driver that supports libusb-win32, libusb-1.0 and the WinUSB API. Zadig makes the process extremely easy:

Zadig config

But be careful...

Replace the wrong driver

Blinky

After trying a lot of different options, Blinky seems to be the easiest way to have your light up and running. You'll need Ruby installed, and the shortest script you can run is:

require 'blinky'
Blinky.new.light.watch_test_server

If everything worked well, the light should cycle 4 different build colors. Hooking it to Jenkins is now just a matter of using the CruiseControl XML feed that Jenkins exposes.

require 'blinky'

begin
    Blinky.new.light.watch_cctray_server 'http://jenkins/hudson/cc.xml', {
        :user => 'jenkins-user',
        :password => 'jenkins-pass',
        :include => 'my-project'
    }
rescue Exception => e
    puts "Error: #{e}"
    sleep 5
    retry
end

Of course, you'll need to install the dependencies with gem install blinky.

Local proxy

If you're behind an NTLM proxy, that last step might have failed. One easy workaround is to install CNTLM. Edit C:\Program Files (x86)\Cntlm\cntlm.ini with the following fields:

Domain      MyDomain
Username    ActiveDirectoryUser
Password    MyPassword
Proxy       isaproxy:89
Listen      3128

Then make sure the CNTLM Windows service is running.

CNTLM service

Now you can just install the Ruby gem with:

$ gem install --http-proxy http://localhost:3128 blinky
$ gem install --http-proxy http://localhost:3128 chicanery

That's it! Just pick a spare computer, run ruby jenkins.rb from the command line, and enjoy your build light!

Comments