Monday, September 18, 2006

Kontinuierliches Builden und Testen mit Continuous Integration

Wer schon einmal an Projekten mit mehreren Programmierern gearbeitet hat, kennt die Probleme, die dadurch manchmal auftreten können. Es existieren meistens zwar genaue Regeln, was wie und wann von wem in das Repository eingecheckt werden darf, trotzdem gelangen immer wieder Codefragmente ins System, die das Programmverhalten immens stören.
Entweder lässt sich das Programm nicht mehr kompilieren, oder das Programmverhalten wird durch den neuen Code ungewollt verändert.

Um solche Fehler schneller zu finden, existieren seit geraumer Zeit sogenannte "Continuous Integration Systems", meistens Server basierte Systeme, die in regelmäßigen Zeitabständen den Code auschecken und ihn zumindest bauen, in erweiterten Systemen auch gleich die Tests ausführen und die Resultate an passenden Stellen veröffentlichen.

Die bekanntesten Vertreter dieser Systeme dürften "Anthill" und "CruiseControl" sein.
Neu in dieser Familie ist das Projekt "Continuum".

Die Installation dieses Servers ist denkbar einfach:
  1. Archivdatei downloaden
  2. Entpacken
  3. Gegebenenfalls die Ports des Servers anpassen (Diese liegen per Default auf 8080 und 8000)
  4. Server starten
  5. Administrator Kennung + Passwort vergeben.
Continuum kann out of the Box mit den SCM Systemen CVS und SVN umgehen. Ein weiterer Pluspunkt ist die Unterstützung von ANT und insbesondere von Maven1 und Maven2.
Besonders bei Maven spielt Continuum seine Stärken aus:
  • In der Maven Projekt Datei die SCM URL definieren.
  • Die Projekt Datei (bei Maven2 die pom.xml) per Uploadfunktion dem Contiuum Server bekannt geben
  • Und schon lädt der Server die aktuelle Version des Programms aus dem Repository.
Sollte ein Mavenprojekt aus mehreren Unterprojekten bestehen, so konfiguriert Continuum diese automatisch.

Per Default lädt nun der Server alle 24 Stunden die neueste Version des Programms vom Server und führt vordefinierte Taks aus. Im Falle von Mavenprojketen ist dies "clean install".
Natürlich kann man diese Liste jederzeit um eigene Targets erweitern, z.B. "clean site site:depoly", und schon kann man jederzeit den aktuellen Stand der software einsehen.

Kombiniert man sein Projekt nun noch mit Tools wie Cobertura oder Clover, so erhält man genaue Statistiken über die Testabdeckung seines Projekts.

Fazit:
Wer an großen Projekten arbeitet, sollte sich überlegen, auf Continuous Intgration Systeme zurückzugreifen. Continuum stellt die einfachste Möglichkeit bereit, ein solches System schnell und einfach zum Einsatz zu bringen.

Links:

No comments:

Post a Comment