Due to some maintenance issues, this service has been switched in read-only mode, you can find more information about the why

and how to migrate your plugin documentation in this blogpost

Skip to end of metadata
Go to start of metadata

Plugin Information

No information for the plugin 'LavaLampNotifier' is available. It may have been removed from distribution.

Indicate Job status using a Lava Lamp

Circuit Design

The lamp which I used was a "USB Glitter Light" available at low cost from your favourite online auction site, local market or pound store.
Unfortunately programmatic control of this type of lamp is not possible in the as-purchased state, when plugged in it is always on.

Therefore I designed a simple circuit around an FTDI MM232R module and some MOSFET drivers to accomplish this, also adding a piezo-beeper to alert developers when a build fails. The prototype was simply built on old-fashioned stripboard (0.1" pitch).

I used a self-drive piezo-electric beeper to provide an audible alert.
It would have been nice to fit the board inside the base of the lamp, but my prototype was too large, so the completed board was fitted in to a small plastic box with a DC power socket for the lamp. I cut the USB plug off the the lamp cable and replaced it with a matching DC power plug. An LED in parallel with the socket provides an additional on/off indication.

All of the documentation (including full resolution .svg diagrams) is contained within the Jenkins plugin LavaLampNotifier.hpi as LavaLampElectronics.zip.
You will need to use your favourite .zip tool, jar or unzip to extract it.

Lamp Control Software

Since the Jenkins server is back in the server room, the lava lamp module is attached to USB on a desktop machine and a simple socket server runs to listen for build results.

FTDI provide free USB drivers for a number of operating systems. Higher level code still has to interface with the driver - a SourceForge project, FTD2XXj, has already done this, so writing a Java program to control it becomes very straightforward.

The lamp control software is also zipped up inside the released Jenkins plugin as LavaLampController.zip. Extract it from LavaLampNotifier.hpi , then unpack it to a directory on your Windows or Linux machine. An example Windows batch file lavalamp.cmd is provided which should get you up and running.

LavaLampServer arguments used within the script are:

LavaLampServer TCPPort UDPPort MCAddr MCPort
     TCPPort - Port to listen for TCP connections (or 0 to disaable TCP) (default:1999)
     UDPPort - Port to listen for UDP connections (or 0 to disable UDP) (default: same as TCPPort)
     MCAddr -  Multicast Address to listen on (default: multicast disabled)
     MCPort -  Port to listen for Multicast (default: same as UDPPort if multicast enabled)

TODO: Make the lamp controller work with the more generic Notification plugin as an alternative to the one below.

Lamp Notifier Plugin

The notifier plug-in talks to this server across the network. (I could have used an existing RSS notifier, but didn't want the lamp to be polling Jenkins constantly, I rather preferred the immediacy of the result being "pushed" to a known listener.) It consists of a "global" module which allows configuration of any number of different LavaLamp host/port combinations (to support different jobs or projects).

A "per-job" module then allows selection of the lamp you want to notify with the status of each job.

Theoretically alternate "lamp server" modules could be developed which might not necessarily use a hardware lamp at all - listening on an IP-multicast address to pop up an icon in everybody's windows tray is one idea.

Version History

Version 1.4 (13th November 2010)

  • 1.3 messed up due to incorrect Maven POMs, fixed and re-released.

Version 1.3 (12th November 2010)

  • Documentation completed. 
  • Incorporated sub-projects as .zips within the .hpi.
  • Supports notification / listening using IP multicast.

Version 1.2 (30th October 2010)

  • Avoid NullPointerException when no lamp selected in job configuration

Version 1.1 (28th October 2010)

  • Support choice of UDP and TCP communications between notifier and server

Version 1.0 (26th October 2010)

  • Initial Release.

1 Comment

  1. Unknown User (codedance)

    I took a lot of inspiration from this project and went a little more "abstract".  My lava lamp is a USB foam missile launcher that fires a barrage of rockets at the developer who breaks the build.  You can read about the project here:


    In particular, thanks for the suggestion to use the existing Notification plugin. Oh! Also please don't take offence to my "Lava Lamps are for pussies" comment... it's all part of the fun nature of my first hardware-hacking project.  I did not get into any soldering with this project, but I did need to reverse engineer a USB wire protocol :-)