Drupal-Distro-Build-Skript
Das Testen von Drupal-Installationsprofilen ist relativ mühselig, da sich ein Teil der Schritte, bis man überhaupt erst zum Testen der eigentlichen Funktionalität kommt, mit dem Build-Prozess beschäftigt.
Diesen muß man eigentlich für jede Änderung erneut durchlaufen…
- Drush make (das macht es im Falls des Feature-Server-Installations-Profiles)
- Drush make mit distro.make aus dem Git-Repository
- Download des Drupal-Cores
- Klonen des in distro.make hinterlegten Repositories für das Installationsprofil
- Rekursive Suche nach weiteren Drush-Makefiles, runterladen der Drupal-Module und des Themes, die im gefundenen Makefile drupal-org.make spezifiziert sind
- Sybolischer-Link vom erstellten Build auf die DocumentRoot des für Testzwecke angelegten VirtualHosts
- Drop auf alle Tabellen in der Zieldatenbank
- Installation von Drupal und einem bestimmtem Installationsprofiles, hier fserver_profile
In der scheinbaren Routine des manuellen Durchlaufen dieser Schritte entsteht zudem auch mal schnell ein Fehler.
So habe ich beim gefühlt 100sten Mal des Durchlaufens dieser Prozedur versehentlich in der falschen Datenbank alle Tabellen ge-dropt-t und dachte mir, Automatisierung muss her, schreib ein Shellskript…
Vorraussetzungen
Neben den Standard-System-Vorrausetzungen für Drupal, wird zusätzlich folgendes für das Bash-Skript benötigt:
- git
- drush
- drush make
Falls Drush vor v.5 genutzt wird - drush site-install 6.x
Falls Drush vor v.4 mit Drupal-6.x genutzt wird
Zur Ausführung sollte sich das Skript im Suchpfad $PATH befinden, kann aber natürlich auch mit einem vorangestellten bash gestartet werden.
Das Skript
Einfaches Bash-Skript welches die o.g. Schritte durchläuft.
Das droppen der Tabellen in der Zieldatenbank erfolgt über drush site-install. [gist:3089178:drupal_distro_build.sh]
Konfiguration
Die vom Skript benötigten Variablen, befanden sich in einer früheren Version zwischen der Interpreterdeklaration und set -o nounset, diese habe ich ausgelagert um das Arbeiten mit verschiedenen Branches und Projekten einfacher zu gestalten.
Die Konfiguration wird dem Skript als Parmeter beim Aufruf übergeben [gist:3089178:example.build.conf.sh]
Beispiele
- Einfacher Aufruf mit Ausgabe
drupal_distro_build.sh fserver6_build.conf.sh
-
Aufruf mit Mailversand der Ausgabe des Buildprozesses, der Betreff ist hier der Name des Builds
drupal_distro_build.sh fserver6_build.conf.sh | mail -s `head -n 1` mail@example.com
- Aufruf mit Generierung eines Logfile, welches so heißt wie der Build + Suffix .log
drupal_distro_build.sh fserver6_build.conf.sh | tee `head -n 1 `.log
</ol>Möglichkeiten
Mögliche Verwendung und Einsatzszenarien:- In Git-Hooks
- In Continious Integration
- ...und natürlich manuell
Quellen
Auf github, Gist 3089178git clone git://gist.github.com/3089178.git drupal_distro_build