Die Antwort ist, dass sie sicherlich nicht überflüssig sind.
Es ist wahr, dass man dasselbe Endergebnis mit einem Bash-Skript erzielen kann, das Drush-Befehle enthält (zumindest den Gebäudeteil). Wenn wir jedoch unseren Prozess in ein CI-Framework wie JenkinsCI integrieren möchten, ist die Verwendung von Phing (Ant oder Capistrano könnte hier ersetzt werden) der richtige Weg.
Mit Phing können wir den Build-Prozess in verschiedene Segmente aufteilen, die auf intelligente Weise an Jenkins zurückmelden können.
Also zum Beispiel. Nehmen wir an, dass ich im Rahmen meines Erstellungsprozesses drush verwende, um zwei Module zu aktivieren, Node und Shouldfail. Dann sollte der Build fehlschlagen. Wenn wir JenkinsCI jedoch nur anweisen, den folgenden Shell-Befehl auszuführen, gibt JenkinsCI an, dass der Build PASSED ist:
drush --quiet --yes @staging en node shouldfail
Offensichtlich stimmt das nicht. Wenn wir jedoch stattdessen ant oder phing verwenden, um denselben Prozess zu definieren, können wir auch eine Fehlerlogik hinzufügen, die Jenkins versteht und die daher nicht ordnungsgemäß funktioniert. Das folgende Phing-Build-Skript versucht, das Gleiche wie der vorherige Befehl zu tun, schlägt jedoch fehl, wie wir es erwarten:
<project name="staging" default="enable modules" description="Jenkins Staging Build">
<target name="enable modules">
<exec command="drush --quiet --yes @staging en node shouldfail" error='error' checkreturn="true">
</exec>
<loadfile property="en.error" file="error" />
<if>
<contains string="${en.error}" substring="warning" />
<then>
<property name="en.fail" value="Could not enable all modules" />
</then>
</if>
<fail if="en.fail" message="${en.fail}" />
</target>
</project>
BTW Ameise und Phing sind fast identisch. Der Vorteil für PHP-Entwickler bei der Verwendung von Phing besteht darin, dass sie Phing komfortabler erweitern können.
Was Drupal-Entwicklung und Drush angeht, sehe ich keinen großen Nutzen darin, Phing zu erweitern, und denke, dass das Ausführen von Exec-Tasks ausreichen würde, um eine intelligente Build-Vorlage zu erstellen.
Nun, um meine Frage zu beantworten, habe ich mir die Zeit genommen, um Phing herauszufinden. Es ist eigentlich ziemlich intuitiv und es dauert nicht allzu lange, um es herauszufinden.
Phing-Skripte ersetzen Shell-Skripte, um die Ausführung mehrerer Befehle und deren Ergebnisse zu steuern. Drush ist eine CLI-Oberfläche für Befehle zur Interaktion mit einer Drupal-Site oder in Verbindung mit Drupal. Sie ergänzen sich.
quelle
Ihre Frage: Überlappen sich Phing und Drush?
TLDR; Version: Sorta. Aber meistens nein.
Die ungekürzte Fassung: Drush und Phing überlappen sich nur in wenigen Fällen. Das Speichern und Archivieren einer Website ist eine der größeren Überschneidungen. Sie könnten es in Phing tun, aber Sie müssten eine Menge Aufgaben schreiben. Sie könnten eine Datenbank sichern, aber drush erledigt dies so einfach mit einem einzigen Befehl. Phing macht das, aber Sie müssen nur ein Befehlszeilenskript schreiben. Wenn Phing glänzt, können Sie Phpunit-Tests ausführen, externe Tools wie ein JAR ausführen, das Ihre CSS-Dateien komprimiert, einen Build Ihrer Drupal-Site / -Anwendung erstellen und verpacken usw.
Was ist Phing?
Phing ist im Wesentlichen der Pilot, der Befehle ausführt. Wenn Sie mit Ant vertraut sind, ist Phing tatsächlich eine enge Verbindung zu Ant (es ist ein Cousin auf Java-Basis). Phing ist in PHP geschrieben.
Sie können Phing verwenden, um Aufgaben zu automatisieren und Ergebnisse basierend auf diesen Aufgaben zu melden. Drush erledigt dagegen nur Aufgaben. Die Ergebnisse der Ausgabe können nicht ermittelt werden.
Anwendungsbeispiel für Phing / Drush:
Ich brauche Drush, um die Datenbank zu entleeren und vom Produkt bis
scp
zum Test das Paket anzusprechen .Phing kann diese Einstellungen in einer externen
build.properties
Datei speichern und in Ihrem Projekt speichern . Es ist auch möglich, verschiedene Einstellungen für jede Umgebung zu speichern. Zum Beispiel kann Phing die letzte abgeschlossene Datei, die per "Drush" gelöscht wurde, mit der richtigen Dokumentenwurzel verknüpfen.Wie funktioniert das alles?
Phing wird von einer XML-Datei gesteuert. Es verwendet eine build.xml-Datei, nimmt Attribute (manchmal auch als Ziele bezeichnet) auf und führt einfache Befehle aus.
Mehr dazu:
Ich kann Ihnen sehr empfehlen, diese SlideShare von den Phing-Projektleitern zu überprüfen:
http://www.slideshare.net/michieltcs/building-and-deploying-php-applications-with-phing
Es gibt Ihnen eine hohe Ebene und einige konkrete Verwendung (plus Code) von Phing. Es hat nichts mit Drupal zu tun, aber es gibt Ihnen eine bessere Vorstellung davon, wie es funktioniert.
quelle