© saicle/Shutterstock.com
Projektkonfiguration, dynamische und statische Softwaretests

Softwarequalität in PHP-Projekten


Im ersten Teil der Serie haben wir den Jenkins-Server vorbereitet, um ihn nun aktiv dafür einzusetzen, die Softwarequalität kontinuierlich zu erfassen und dem Entwicklerteam geeignet zu präsentieren. Hierfür werden wir sowohl statische als auch dynamische Softwaretests in Jenkins integrieren.

Mit dieser Integration versetzen wir Jenkins in die Lage, dem Entwicklungsteam wichtige Arbeit automatisch abzunehmen, was letzten Endes verhindert, dass sie vergessen wird. Da nun im ersten Artikel der Serie alles eingerichtet wurde, werden wir Schritt für Schritt ein eigenes Projekt starten. Zunächst beginnen wir damit, ein eigenes Projekt einzurichten, wobei wir auch auf die unterschiedlichen Projektarten eingehen werden. Im Anschluss werden wir dynamische Softwaretests und statische Softwaretests einrichten.

Projekt einrichten

Jenkins ist nach der im vorherigen Artikel beschriebenen Installation der Plug-ins nun vollständig vorbereitet, um ein PHP-Projekt zu überwachen und zu erstellen. Beginnen möchte ich damit, das Projekt in Jenkins anzulegen und die PHP-Toolchain auf Seiten Jenkins entsprechend zu konfigurieren. Nachdem dies geschehen ist, passen wir die build.xml entsprechend an und erweitern sie um dynamische Softwaretests, statische Softwaretests und versehen sie mit einer Dokumentation.

Auswahl der Projektart

In der Standardkonfiguration von Jenkins ist es möglich, vier verschiedene Projekttypen zu erstellen. Sie kennzeichnen sich u. a. dadurch, dass bestimmte Projektkonfigurationen bereits vorbelegt sind. Die vier unterschiedlichen Arten sind:

  • „Freestyle“-Softwareprojekt bauen: Das ist das Standardprofil in Jenkins, welches individuell konfiguriert und angepasst werden kann.

  • Maven-Projekt: Mit diesem Profil ist es möglich, Maven-Projekte in Jenkins einzubinden. Die POM-Dateien werden hierbei von Jenkins analysiert, was den manuellen Konfigurationsaufwand erheblich senkt.

  • Externen Job überwachen: Um Prozesse zu überwachen, die außerhalb von Jenkins ausgeführt werden, eignet sich dieses Profil.

  • Multikonfigurationsprojekt bauen: Um plattformübergreifende Projekte zu erstellen, die unterschiedliche Konfigurationen in Abhängigkeit der Plattform benötigen, eignet sich dieses Profil.

Projekt erstellen

Klicken Sie im Menü auf Element erstellen. Darüber gelangen Sie zur eben beschriebenen Projektauswahl. Wir werden in unserem Beispiel ein Freestyleprojekt anlegen. Tragen Sie hierzu einfach einen Namen in das entsprechende Feld ein und klicken Sie auf Ok. Als Nächstes kümmern wir uns um die Quelle unseres Builds.

Build-Quelle festlegen

Direkt im Anschluss gelangen Sie zur Projektkonfigurationsübersicht. Im Abschnitt „Source-Code-Management“ (Abb. 1) können Sie verschiedene Versionsmanagementsysteme als Quelle in Jenkins hinterlegen, z. B. CVS, SVN oder wie in unserem Beispiel Git.

schroeder_build_1.tif_fmt1.jpgAbb. 1: Jenkins Source-Code-Management

Wir haben uns entschieden, den eigentlichen Build-Prozess durch Ant, also mit einem Ant Build Script, steuern zu lassen. Dies hat den Vorteil, dass diese Ant build.xml auch von Hand gestartet oder z. B. in eine IDE eingebunden werden kann. Ein doppelter Arbeits- und Konfigurationsaufwand entfällt somit. Hierzu tragen wir im Abschnitt Build-Verfahren (Abb. 2) das Target „build“ ein.

schroeder_build_2.tif_fmt1.jpgAbb. 2: Jenkins Projekt-Build-Verfahren

Build-Auslösung

Der Build-Prozess sollte wenn möglich automatisch von Jenkins bei jeder Änderung im Sourcecode gestartet werden. Dies stellt u. a. sicher, dass die automatischen Softwaretests nicht erst am Ende bzw. kurz vor dem Release gemacht werden. Kein Commit ins Repository darf dazu führen, dass die Tests fehlschlagen. Meldet Jenkins einen Fehler – was zu einem Fehlschlag des Build-Prozesses führt – muss der Commit entsprechend berichtigt werden. Jenkins bietet zur Automatisierung drei Möglichkeiten:

  • Build after other projects are built: Prozess anstoßen, nachdem ein anderes Projekt erstellt wurde.

  • Builds zeitgesteuert starten: Projekt zu ausgewählten Zeiten regelmäßig erstellen.

  • Source-Code-Management-System abfragen: Projekt erstellen, nachdem eine Änderung im Repository festgestellt wurde.

Am sinnvollsten ist es, wenn wir Jenkins in der Form einsetzen, in der es regelmäßig beim Versionsmanagementsystem nach Änderungen anfragt und den Build-Prozess entsprechend auslöst. Auch dies geschieht zeitgesteuert in regelmäßigen Abständen; der Unterschied zu Punkt 2 ist jedoch, dass der Build-Prozess letzten Endes nur bei vorliegenden Änderungen angestoßen wird.

Konfiguration der PHP-Toolchain

Die große Stärke von Jenkins liegt darin, sämtl...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang