Continuous Integration met Hudson

 
30 januari 2008

Als je continuous integration zegt, zullen de meesten daarbij al snel aan een van de CruiseControl incarnaties denken. Misschien heeft iemand ook wel eens gehoord van Continuum of Ant Hill, maar Hudson is nog een relatief onbekende. Toch zijn er een heleboel punten die pleiten voor deze CI engine:

  • zeer makkelijke installatie: kan gedeployed worden als war of stand-alone draaien
  • ditto configuratie, zowel van de engine als build jobs
  • functioneel uitbreidbaar met plugins
  • actieve ontwikkeling

Maar genoeg marketingpraat, start met downloaden van de meest recente versie vanaf hudson.dev.java.net; op moment van schrijven is dat 1.161.

Voor we de war kunnen deployen, moeten we nog een paar kleine configuratiestappen doorlopen. Als eerste moet de security manager in tomcat uitgeschakeld worden. Dat is niet iets om zomaar te doen, maar met de security manager kun je geen andere code draaien dan die een permissie meegekregen hebben. Om dat nu voor elke build en build job opnieuw te moeten regelen vond ik wat te veel werk (mocht iemand weten hoe het makkelijk kan, laat aub een aanvulling achter bij de comments). Om dit te doen, moet in het opstart script /etc/init.d/tomcat5.5 de waarde van TOMCAT_SECURITY gewijzigd worden van yes naar no.

Daarnaast moet er voor Hudson nog een variabele HUDSON_HOME meegegeven worden. Daar slaat Hudson de files op die voor een build nodig zijn. Iets als het volgende vlak voor export CATALINA_HOME toevoegen aan het opstart script zou moeten volstaan:

HUDSON_HOME /home/hudson
export HUDSON_HOME

Maak deze directory aan en zorg dat de gebruiker tomcat55 er als enige toegang toe heeft.

Start nu tomcat opnieuw op en ga naar de manager applicatie, login en deploy de war die eerder is gedownload. Als alles goed is gegaan, verschijnt in de lijst van aanwezige applicaties nu Hudson en is deze ook gestart.

Let op, is in een eerder stadium mod-security geinstalleerd, dan kan het zijn dat je tegen het probleem aanloopt dat de war file te groot is. De standaard instelling die diverse voorbeeldconfiguraties aanhouden is slechts 128 kilobyte voor uploads. Pas dit aan naar iets in de range van 10 a 20 megabyte, in ieder geval een grootte die de meeste war files niet zullen halen.

Voeg nu de volgende twee regels toe aan uriworkermap.properties en Hudson is via Apache beschikbaar:

/hudson=ajp13_worker
/hudson/*=ajp13_worker

Hudson configureren kan door op de link Manage Hudson te klikken. Het eerste wat daar gedaan kan worden is het aanzetten van de security. Dat zorgt er voor dat voor het aanpassen van de configuratie of voor het aanmaken of aanpassen van een build job een login nodig is. Deze login moet in de groep admin zitten, dezelfde waarmee ook in de admin applicatie van tomcat ingelogged kan worden, als die geactiveerd is!

Om Hudson meer mogelijkheden te geven, kunnen er plugins geinstalleerd worden. Op de site staat een forse lijst. Degene die al direct interessant is is de trac plugin. Download de hpi-file, upload deze naar Hudson en herstart de applicatie via de tomcat manager applicatie.

Andere interessante plugins…

  • koppelen het notificatie systeem aan een im-client (jabber) naast de standaard rss-feeds,
  • koppelen andere versie beheersystemen naast de standaard aanwezige Subversion en CVS,
  • activeren andere build tools als nant of msbuild naast ant, shellscript en maven die standaard ondersteund worden,
  • of integreren diverse ondersteunende tools als cobertura, emma, findbugs, fxcops of pylint naast de standaard jUnit/test-ng rapportages.

En mocht er iets niet aanwezig zijn, dan is er een handleiding die laat zien hoe zelf een plugin te schrijven.


Werken met ?
Kijk dan bij onze mogelijkheden voor zowel starters als ervaren engineers.


Categorieën: Development, Deployment

Tags: , , , , ,