Jenkins med Lava-lampor

Lava-lampor är ett idealiskt sätt att visa byggstatus för en Continuous Integration server som t.ex. Jenkins. Lava-lampor har den egenskapen att de är tröga att värma upp och att kyla av. Om den röda Lava-lampan står och bubblar i projektrummet så kan man dra slutsatsen att systemet har varit trasigt ett tag. Det kan bli till en sport att se till att den röda aldrig riktigt hinner börja bubbla. Man kan också känna på lamporna med handen för att få en uppfattning om hur länge tillståndet har varit.
DSC_0061
Jag satte av en eftermiddag åt att få igång en sådan indikator för Jenkins i mitt projekt.

Sökningen “Jenkins+Lava” gav förbryllande lite träffar, där den mest adekvata fanns på Jenkins egen site där det beskrivs en jenkins-plugin som styr lampor. Då artikeln innehöll bilder på elektroniska hembyggesrisbuskar klickade jag snart vidare. Jag fann också Patriks Fredrikssons utmärkta artikel från 2010 om Lava-lampor med Clojure. Jag bedömde emellertid att det skulle ta mig mer än en eftermiddag att lära mig modifiera, bygga och deploya Clojure-program och nånstans var det väl så att jag mest letade efter uppenbara anledningar att inte bygga en helt egen lösning. Till min förtjusning fann jag inte direkt några uppenbara sådana anledningar utan kunde sätta igång.

Jenkinslamps är en applikation som kan köras på vilken dator som helst, lämpligen i närheten av där lamporna skall vara. Jag valde min egen arbetsstation i projektrummet. Det kan även snurra på servern om man skulle vilja. I mitt fall står Jenkinsmaskinen på annan ort så till denna är inte lämpligt att koppla någon lampstyrning. Lösningen jag landade på funkar på Java SE 6, för att man skulle kunna köra även på ställen där man sitter kvar på det och inte klivit över på senare Java-versioner.

Styrningen av lamporna sker t.ex. med en Tellstick som styr 2 st Nexa fjärrströmbrytare, men applikationen supportar vilken produkt som helst som tillåter att man styr lampor med ett kommando från kommandoprompten. Man installerar det program som följer med och testar att lamporna går att slå av och på med det. Sedan tar man fram kommandoprompten och testar exakt hur kommandot skall se ut. Så här kan kommandot se ut för att tända den gröna Lava-lampan:

C:\> “C:\Program Files (x86)\Telldus\tdtool.exe" --on 3

Jenkinslamps fungerar så att det med jämna mellanrum kontrollerar byggstatus (färg på “bollen”) via Jenkins REST-API. Om något av byggena man angivit i konfigurationsfilen fallerar så körs ett nativekommando som tänder och släcker rätt lampor.

Utanför kontorstid släcks lamporna. Applikationen känner till svenska helgdagar.

Jenkinslamps konfigurationsfil ser ut så här:

jenkinsurl=http://your-ci-server:8080/
pollTimeMsec=10000
jobs=your-unit-test your-integration-test
turnOnHour=8
turnOffHour=18
greenCmdOn="C:\\Program Files (x86)\\Telldus\\tdtool.exe" --on 1
greenCmdOff="C:\\Program Files (x86)\\Telldus\\tdtool.exe" --off 1
redCmdOn="C:\\Program Files (x86)\\Telldus\\tdtool.exe" --on 2
redCmdOff="C:\\Program Files (x86)\\Telldus\\tdtool.exe" --off 2

Snabbrecept

  • Boka upp 1176:- av dina privata pengar eller fråga projektledaren eller chefen om tillstånd att ta från projekt/avdelningsbudgeten eller börja på CAG (där sånt här aldrig är ett problem)
  • Spring in på Clas Ohlsson och greppa två såna här lavalampor, en Tellstick och ett kit med fjärrströmbrytare
  • Installera mjukvara för Tellstick och konfigurera in fjärrströmbrytarna för bägge lamporna. Se till att du kan slå av och på dem från kommandoprompten
  • Ladda ned den färdigbyggda zipen för jenkinslamps från bitbucket (eller bygg från source) och extrahera den i en folder, t.ex. C:\jenkinslamps-1.1
  • Anpassa jenkinslamps.properties
  • Starta med jenkinslamps.bat

IT Consultant at CAG Edge. Cloud and Continuous Delivery specialist, software developer and architect, Node.js, Java.

Publicerad i Continuous Delivery, Java

Kategorier

WP to LinkedIn Auto Publish Powered By : XYZScripts.com