Datenbank-Deployment und -Versionierung mit Phing und Liquibase

DB V 1.x

Ronald Marske


Wer sich die Aufgabe stellt, Prozesse und wiederkehrende Arbeitsschritte zu automatisieren, kommt an Build-Tools wie Apache Ant [1] oder Phing [2] nicht vorbei. Die Entscheidung, welches der beiden Tools verwendet wird, sollte jeder Entwickler selbst treffen. Ant ist ein reines Java-Build-Tool. Es wird jedoch auch in der Welt von PHP und Webprojekten gern eingesetzt. Phing ist ein PHP-Projekt-Build-System, dessen Idee und Konzept auf Apache Ant basiert. Für mich ist Phing die erste Wahl, da es mir als PHP-Entwickler ermöglicht, es meinen eigenen Anforderungen anzupassen oder weiterzuentwickeln. In den folgenden Beispielen konzentriere ich mich daher nur auf Phing.

Phing

Die Installation von Phing wird über den eigenen PEAR-Channel [3] realisiert. Dazu wird der Phing-Channel in PEAR registriert und die Installation ausgelöst:

$ pear channel-discover pear.phing.info$ pear install [--alldeps] phing/phing

Windows-Benutzer sollten beachten, dass die Verwendung von --alldeps möglicherweise PECL-Erweiterungen wie XDebug [4] installiert, und das kann laut Dokumentation [5] auf Windows-Systemen unter Umständen zu Problemen führen.

Phing wird über eine XML-Datei, das so genannte „Build-File“, konfiguriert. Im Build-File können Variablen, Befehle, Abläufe, und Abhängigkeiten definiert werden. Im Beispiel in Listing 1 ist eine Hello-World-Konfiguration dargestellt. Der Knoten project definiert den Namen des Projekts sowie den Namen des Target-Knotens, der standardmäßig ausgeführt werden soll. Ein Target definiert bzw. gruppiert verschiedene zusammenhängende Aufgaben (Tasks). Ein Target kann in Abhängigkeit eines anderen Targets stehen, der dann im Vorfeld ausgeführt wird. Im Beispiel „Hello World“ verlangt das Target world das in Abhängigkeit stehende Target hello. Im Hintergrund wird in Phing zuerst hello gefolgt von world ausgeführt, was – abstrakt gesehen – die Ausgabe „Hello World“ zur Folge hat. Das vollständige Prinzip von Phing basiert auf diesem Ansatz. Wer Phing näher kennenlernen möchte, kann sich dazu die Dokumentation [6] anschauen. Darin sind alle Befehle und viele Beispiele beschrieben.

Listing 1: Hello-World-Build-File Ausgabe:Buildfile: hello world/build.xmlHello World > hello: [echo] HelloHe...

Datenbank-Deployment und -Versionierung mit Phing und Liquibase

DB V 1.x

Ronald Marske


Wer sich die Aufgabe stellt, Prozesse und wiederkehrende Arbeitsschritte zu automatisieren, kommt an Build-Tools wie Apache Ant [1] oder Phing [2] nicht vorbei. Die Entscheidung, welches der beiden Tools verwendet wird, sollte jeder Entwickler selbst treffen. Ant ist ein reines Java-Build-Tool. Es wird jedoch auch in der Welt von PHP und Webprojekten gern eingesetzt. Phing ist ein PHP-Projekt-Build-System, dessen Idee und Konzept auf Apache Ant basiert. Für mich ist Phing die erste Wahl, da es mir als PHP-Entwickler ermöglicht, es meinen eigenen Anforderungen anzupassen oder weiterzuentwickeln. In den folgenden Beispielen konzentriere ich mich daher nur auf Phing.

Phing

Die Installation von Phing wird über den eigenen PEAR-Channel [3] realisiert. Dazu wird der Phing-Channel in PEAR registriert und die Installation ausgelöst:

$ pear channel-discover pear.phing.info$ pear install [--alldeps] phing/phing

Windows-Benutzer sollten beachten, dass die Verwendung von --alldeps möglicherweise PECL-Erweiterungen wie XDebug [4] installiert, und das kann laut Dokumentation [5] auf Windows-Systemen unter Umständen zu Problemen führen.

Phing wird über eine XML-Datei, das so genannte „Build-File“, konfiguriert. Im Build-File können Variablen, Befehle, Abläufe, und Abhängigkeiten definiert werden. Im Beispiel in Listing 1 ist eine Hello-World-Konfiguration dargestellt. Der Knoten project definiert den Namen des Projekts sowie den Namen des Target-Knotens, der standardmäßig ausgeführt werden soll. Ein Target definiert bzw. gruppiert verschiedene zusammenhängende Aufgaben (Tasks). Ein Target kann in Abhängigkeit eines anderen Targets stehen, der dann im Vorfeld ausgeführt wird. Im Beispiel „Hello World“ verlangt das Target world das in Abhängigkeit stehende Target hello. Im Hintergrund wird in Phing zuerst hello gefolgt von world ausgeführt, was – abstrakt gesehen – die Ausgabe „Hello World“ zur Folge hat. Das vollständige Prinzip von Phing basiert auf diesem Ansatz. Wer Phing näher kennenlernen möchte, kann sich dazu die Dokumentation [6] anschauen. Darin sind alle Befehle und viele Beispiele beschrieben.

Listing 1: Hello-World-Build-File Ausgabe:Buildfile: hello world/build.xmlHello World > hello: [echo] HelloHe...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang