In Teil 1 haben wir gesehen, was der Sinn von Continuous Integration ist, welche Komponenten ein Server bereitstellen muss und wie die Theorie hinter dem Namen aussieht. Beispielhaft betrachten wir phpUnderControl. Im Teil 3 werde ich den Hudson CI Server vorstellen, sodass man einen Vergleich wagen kann.
Als Basissystem wurde Debian Squeeze genutzt. Auf anderen Systemen wird die Installation ähnlich verlaufen.
phpUnderControl nutzt als Basis CruiseControl, was ein Java-CI-Server ist. Dieser wurde natürlich in Java entwickelt und setzt somit ein JRE voraus. Bei dem Test wurde Java6 von Sun genutzt.
CruiseControl wurde in der aktuellen Version heruntergeladen und im /opt Verzeichnis entpackt. In meinem Fall findet man nun den cruisecontrol-2.8.3 Ordner. Um ein späteres Upgrade zu ermöglichen wird ein symbolischer Link angelegt, der cruisecontrol heißt.
ln -sf cruisecontrol-bin-2.8.3/ cruisecontrol
Nun kann man CruiseControl schon starten. Als nächstes installiert man phpUnderControl. Am einfachsten erledigt man dies über PEAR. Dadurch werden auch gleich die Abhängigkeiten aufgelöst.
pear channel-discover components.ez.no
pear channel-discover pear.phpundercontrol.org
pear install --alldeps phpuc/phpUnderControl-beta
Bei Squeeze wird man bei der Installation einige Fehler sehen. Diese kommen daher, dass Debian das Verzeichnis /usr/share/doc
symbolisch verlinkt. Die einfachste Lösung ist den Link zu löschen und den letzten der obengenannten Schritte wiederholt durchzuführen. Nun funktioniert die Installation auch einwandfrei.
CruiseControl wird als nächstes gepatcht. Dies erledigt man über einen kurzen Befehl.
phpuc install /opt/cruisecontrol
Wenn man möchte kann man jetzt noch ein Beispiel-Projekt an legen:
phpuc example /opt/cruisecontrol
Wenn hierbei Probleme auftreten kann es sein, dass der PHP_CodeBrowser nicht installiert ist. Dieser wird benötigt, um den Sourcecode auf dem CI-Server in einer sehr hübschen Art und Weise durchzusehen. Das phpcb genannte Tool kann man über pear nachinstallieren. Aktuell ist es noch im Alpha-Status, daher ist die Versionsnummer notwendig und ist später vielleicht anders – also bitte bei Bedarf anpassen:
pear install --alldeps phpunit/PHP_CodeBrowser-0.1.1
Bevor man CruiseControl startet sollte man noch ant installieren.
apt-get install ant
Nun kann CruiseControl gestartet werden und man kann sich anschauen, was die Ausgabe so bietet.
/opt/cruisecontrol/cruisecontrol.sh
Die Url lautet dann ip:8080/cruisecontrol/
man muss evtl. etwas warten, da der Startup-Vorgang einen Moment dauert. Auf der Startseite findet man das Beispiel-Projekt „php-under-control“ und kann sich hier die einzelnen Tabs anschauen. Vorhanden sind hier Overview, Tests, Metrics, Coverage, Code Browser, Documentation, CodeSniffer, PHPUnit PMD. Die meisten Tabs sind selbsterklärend. Spannend ist der Codebrowser, der den Sourcecode in einer schöner Darstellung aufbereitet.
Im nächsten Schritt fügt man ein eigenes Projekt in CC und phpUnderControl ein. Hierfür biete ich keine ausführliche Beschreibung, da man dies in der phpUnderControl Dokumentation nachlesen kann. Die Beschreibung geht auf die einzelnen Aspekte ein.
Ich persönlich finde die vielen manuellen Schritte eher abschreckend und umständlich. Daher gibt es im nächsten Teil eine Alternative zu phpUnderControl, die mE übersichtlicher zu konfigurieren ist.