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...

  1. Drush make (das macht es im Falls des Feature-Server-Installations-Profiles)
    1. Drush make mit distro.make aus dem Git-Repository
    2. Download des Drupal-Cores
    3. Klonen des in distro.make hinterlegten Repositories für das Installationsprofil
    4. Rekursive Suche nach weiteren Drush-Makefiles,
      runterladen der Drupal-Module und des Themes, die im gefundenen Makefile drupal-org.make spezifiziert sind
  2. Sybolischer-Link vom erstellten Build auf die DocumentRoot des für Testzwecke angelegten VirtualHosts
  3. Drop auf alle Tabellen in der Zieldatenbank
  4. 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:

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.

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

Beispiele

  1. Einfacher Aufruf mit Ausgabe
    drupal_distro_build.sh fserver6_build.conf.sh
  2. 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
  3. 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

Möglichkeiten

Mögliche Verwendung und Einsatzszenarien:

  • In Git-Hooks
  • In Continious Integration
  • ...und natürlich manuell

Quellen

Auf github, Gist 3089178

git clone git://gist.github.com/3089178.git drupal_distro_build