Kolumne: Quality Time

Automatisieren was geht …
Kommentare

Der Volksmund sagt: Als Softwareentwickler sollte man jeden Arbeitsschritt, den man mindestens zwei Mal ausführen muss, automatisieren. Das spart langfristig Zeit und vermeidet insbesondere die Fehler, die sich gerne durch langweilige manuelle Tätigkeiten einschleichen.

PHP Magazin

Die Kolumne „Automatisieren was geht .“ von Tobias Schlitt ist erstmalig erschienen im PHP Magazin 3.2012.

In die gleiche Kerbe schlagen auch Prozesse wie Continuous Integration, um Tests bei jeder Änderung ausführen zu lassen und die Qualität von Softwareprojekten immer im Blick zu behalten. Doch bisher kocht jedes Team noch sein eigenes Süppchen, obwohl ein wesentlicher Teil der zu automatisierenden Schritte in jedem PHP-Projekt gleich ist. Das Projekt Ant [1] build-commons (ABC) [2] versucht hier mit einem Framework für Build-Skripte Abhilfe zu schaffen.

Es gibt Dinge, die will man einfach in jedem Projekt machen und am besten über ein einfaches Kommando abrufbar haben, um sie bei der Entwicklung, im CI-Server oder beim Rollout einfach ausführen zu können. Dazu zählen beispielsweise das Ausführen von Unit und Integration Tests, das Paketieren eines Release und das Ausrollen desselbigen.

Das build-commons-Projekt stellt ein modulares und erweiterbares Ant-Build-Skript bereit, das diese und weitere Aktionen bereits implementiert und das nur noch konfiguriert bzw. teilweise individualisiert werden muss. Einzelne Schritte werden in Form von Targets realisiert, die entsprechend voneinander abhängen:

  • clean setzt den lokalen Projektstatus zurück, indem beispielsweise Artefakte aus einem vorherigen Lauf gelöscht werden.
  • initialize führt die Initialisierung des Build-Verzeichnisses durch und aktualisiert den Quellcodestand aus der Versionsverwaltung.
  • compile macht, per Default, einen PHP-Syntax-Check auf geänderten Dateien.
  • test dient der Ausführung der Unit Tests.
  • package kann ein Release in Form eines ZIP-Archivs erzeugen, optional auch ein PEAR-Paket oder ein PHAR.
  • integration-test führt entsprechend die Integration Tests aus, in der lokalen Entwicklungsumgebung oder gegen eines der Release-Archive.
  • verify dient der Erstellung zeitintensiver Qualitäts-Reports, wie die Code-Coverage-Analyse der Tests, und statischer Analysen mit CodeSniffer, PHP_Depend und mehr.
  • install führt eine lokale Installation des Projektes durch, was beispielsweise das Kopieren von Dateien aber auch Datenbankupdates beinhalten kann.
  • deploy erlaubt letztendlich das Ausrollen des Projektes auf einen entfernten Server.
  • Mit diesen Targets lässt sich bereits der Standardbedarf der meisten Projekte decken. Diese benötigen lediglich eine entsprechende Property-Datei mit passenden Einstellungen für build-commons. Aber auch für komplexe Projekte lässt sich das Framework benutzen, denn jeder Schritt kann mittels Hooks erweitert oder durch eigene Implementierungen ersetzt werden. Eine ganz einfache build.xml zur Nutzung von build-commons ist im folgenden Listing gezeigt:

    
    

    Lediglich das Hauptskript der build-commons wird importiert und die erwähnte Property-Datei angegeben, welche im zweiten Listing dargestellt ist:

    project.name      = myProject
    project.version   = 0.0.0
    project.stability = alpha
    
    codesniffer.standard = Arbit
    
    pear.channel.uri = pear.example.com

    Folgt das eigene Projekt bereits der von build-commons vorgeschlagenen Basisstruktur für Projektverzeichnisse, reicht anschließend ein Aufruf von ant auf der Kommandozeile aus, um den Verify-Schritt anzustoßen oder ant -p, um die verfügbaren Kommandos anzeigen zu lassen.

    Ant-basierte Build-Skripte lassen sich meist auch hervorragend in IDEs integrieren. Natürlich verlangt die Nutzung von build-commons für existierende Projekte eine gewisse Migrationsenergie. Allerdings wird man mit einer sauberen und vor allem standardisierten Build Environment belohnt, die in nahezu jedem Projekt zum Einsatz kommen kann und jede Menge Standardprozesse bereits mitbringt.

    Tobias Schlitt ist Diplom-Informatiker (Uni) und arbeitet seit 1999 in professionellen Webprojekten auf Basis von PHP. Als Open-Source-Enthusiast beteiligt er sich an verschiedenen Communityprojekten. Tobias ist Mitgründer der Qafoo GmbH, die Entwicklungsteams dabei unterstützt, hochqualitative Websoftware zu entwickeln. Dazu zählen unter anderem Consulting und Training zu Qualitätssicherungsprozessen und professionellem Software-Engineering.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -