Odpowiedź jest taka, że z pewnością nie są one zbędne.
Prawdą jest, że ten sam efekt końcowy można osiągnąć za pomocą skryptu bash, który zawiera polecenia drush (przynajmniej część budynku). Ale jeśli chcemy zintegrować nasz proces ze środowiskiem CI, takim jak JenkinsCI, to użycie czegoś takiego jak phing (mrówka lub kapistrano można tutaj zastąpić) jest dobrym rozwiązaniem.
Dzięki phing możemy podzielić proces kompilacji na odrębne segmenty, które mogą raportować do Jenkins w inteligentny sposób.
Na przykład Powiedz, że jako część mojego procesu kompilacji używam drush, aby włączyć dwa moduły, węzeł i powinien zawodzić. Następnie kompilacja powinna zakończyć się niepowodzeniem. Ale jeśli wszystko, co zrobimy, to powiedz JenkinsCI, aby uruchomiło następującą komendę powłoki, JenkinsCI powie, że kompilacja PASSED:
drush --quiet --yes @staging en node shouldfail
Najwyraźniej to nie w porządku. Jeśli jednak zamiast tego użyjemy mrówki lub phinga do zdefiniowania tego samego procesu, możemy również dodać logikę błędów, którą Jenkins rozumie, i dlatego zawiodą tak, jak powinny. Poniższy skrypt kompilacji phing próbuje zrobić to samo, co poprzednie polecenie, ale kończy się niepowodzeniem, tak jak się spodziewamy:
<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 mrówka i phing są prawie identyczne. Zaletą dla programistów PHP w korzystaniu z phing jest to, że mogą wygodniej rozszerzać phing.
Jeśli chodzi o rozwój Drupala i drusha, które są tak dobre, jak ja, nie widzę zbyt dużej wartości w rozszerzaniu phinga i sądzę, że uruchomienie zadań exec wystarczyłoby do stworzenia inteligentnego szablonu kompilacji.
Cóż, aby odpowiedzieć na moje pytanie, poświęciłem czas na zastanowienie się nad phingiem. W rzeczywistości jest dość intuicyjny i nie zajmuje to zbyt długo.
Skrypty phingowe zastępują skrypty powłoki, kontrolujące wykonywanie wielu poleceń i ich wyników. Drush to interfejs CLI dla poleceń umożliwiających interakcję z witryną Drupal lub związaną z Drupal. Uzupełniają się.
źródło
Twoje pytanie: czy Phing i Drush nakładają się na siebie?
TLDR; wersja: Sorta. Ale przeważnie nie.
Nieokreślona wersja: Drush i phing nakładają się na siebie w kilku przypadkach. Głównie zrzucanie i archiwizowanie strony internetowej byłoby jednym z większych nakładów. Możesz to zrobić phingiem, ale będziesz musiał napisać wiele zadań. Możesz zrzucić bazę danych, ale drush robi to tak łatwo za pomocą jednego polecenia. Phing to robi, ale wystarczy napisać skrypt wiersza poleceń. Tam, gdzie phing shine to możliwość uruchamiania testów phpunit, uruchom zewnętrzne narzędzia, takie jak jar, który kompresuje twoje pliki css, utwórz i spakuj kompilację twojej strony / aplikacji drupal itp.
Co to jest phing?
Phing jest zasadniczo pilotem, który wykonuje polecenia. Jeśli znasz Ant, Phing jest w rzeczywistości bliskim portem od Anta (kuzyn z Java). Phing jest napisany w PHP.
Możesz użyć Phing do automatyzacji zadań i raportowania wyników na podstawie tych zadań. Z drugiej strony Drush po prostu wykonuje zadania. Nie można określić oceny wyników wyjściowych.
Przykładowy przypadek użycia phing / drush:
Potrzebuję drush, aby zrzucić bazę danych i wysłać phing do
scp
pakietu od prod do testowania.Phing może przechowywać te ustawienia w zewnętrznym
build.properties
pliku i pobierać je do projektu. Może także przechowywać różne ustawienia dla każdego środowiska. Na przykład Phing może dowiązać symbolicznie ostatnie ukończone, które zostało zrzucone przez drush, do odpowiedniego katalogu głównego dokumentu.Jak to wszystko działa?
Phing jest sterowany przez xml. Zużywa plik build.xml i pobiera atrybuty (czasem nazywane celami) i wykonuje proste polecenia.
Więcej na ten temat:
Gorąco polecam przejrzenie tego pokazu slajdów przez liderów projektu Phing:
http://www.slideshare.net/michieltcs/building-and-deploying-php-applications-with-phing
Daje ci wysoki poziom i pewne konkretne użycie (plus kod) phing. Nie ma to żadnego związku z drupalem, ale da ci lepsze pojęcie o tym, jak to działa.
źródło