Ответ заключается в том, что они, конечно, не являются избыточными.
Это правда, что можно достичь того же конечного результата, используя скрипт bash, который включает команды drush (по крайней мере, часть сборки). Но если мы собираемся интегрировать наш процесс в инфраструктуру CI, такую как JenkinsCI, то использовать что-то вроде phing (здесь можно заменить муравей или capistrano).
С помощью phing мы можем разбить процесс сборки на отдельные сегменты, которые могут интеллектуально отчитываться перед Jenkins.
Так например. Скажем, в рамках процесса сборки я использую drush, чтобы включить два модуля, узел и должен потерпеть неудачу. Тогда сборка должна провалиться. Но если все, что мы делаем, это сообщаем JenkinsCI выполнить следующую команду оболочки, JenkinsCI скажет, что сборка PASSED:
drush --quiet --yes @staging en node shouldfail
Понятно, что это не так. Однако если вместо этого мы используем ant или phing для определения того же процесса, мы также можем добавить некоторую логику сбоя, которую понимает Дженкинс, и, следовательно, потерпеть неудачу, как и должно быть. Следующий скрипт сборки phing пытается сделать то же самое, что и предыдущая команда, но завершается неудачно, как мы и ожидаем:
<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>
Кстати, муравей и phing почти идентичны. Преимущество phing для разработчиков PHP в том, что они могут более удобно расширять phing.
Что касается разработки и дружественной работы Drupal, то я не вижу особой ценности в расширении phing и думаю, что для создания шаблона умной сборки будет достаточно выполнения exec-задач.
Ну, чтобы ответить на мой вопрос, я потратил время, чтобы выяснить, как звонить. Это на самом деле довольно интуитивно понятно, и это не займет много времени, чтобы понять.
Сценарии Phing являются заменой сценариев оболочки для контроля выполнения нескольких команд и их результатов. Drush - это интерфейс CLI для команд для взаимодействия с сайтом Drupal или связанных с Drupal. Они дополняют друг друга.
источник
Ваш вопрос: перекрываются ли Phing и Drush?
TLDR; версия: Сорта. Но в основном нет.
Неограниченная версия: Drush и phing перекрываются лишь в нескольких случаях. В основном, дамп и архивирование веб-сайта будут одним из самых больших совпадений. Вы можете сделать это в phing, но вам придется написать много задач. Вы можете создать дамп базы данных, но drush делает это легко с помощью одной команды. Phing делает это, но вам просто нужно написать скрипт командной строки. Где phing shines - это возможность запускать тесты phpunit, запускать внешние инструменты, такие как jar, который сжимает ваши css-файлы, создавать и упаковывать сборки вашего сайта / приложения на drupal и т. Д.
Что такое финг?
Финг - по сути пилот, который выполняет команды. Если вы знакомы с Ant, Phing на самом деле является близким портом от Ant (это двоюродный брат на основе Java). Финг написан на PHP.
Вы можете использовать Phing для автоматизации задач и создания отчетов о результатах на основе этих задач. Drush, с другой стороны, просто выполняет задачи. Невозможно определить, оценить результаты вывода.
Пример использования для phing / drush:
Мне нужен drush, чтобы выгрузить базу данных и позвонить
scp
в пакет от prod до тестирования.Phing может сохранить эти настройки во внешнем
build.properties
файле и использовать их в своем проекте. Он также может хранить различные настройки для каждой среды. Например, Phing может ссылаться на последнюю завершенную работу, которая была выгружена с помощью drush в правильный корень документа.Как все это работает?
Phing управляется XML. Он использует файл build.xml, получает атрибуты (иногда называемые целями) и выполняет простые команды.
Подробнее об этом:
Я настоятельно рекомендую вам ознакомиться с этим слайдом лидерами проекта Phing:
http://www.slideshare.net/michieltcs/building-and-deploying-php-applications-with-phing
Это даст вам высокий уровень и некоторое конкретное использование (плюс код) phing. Это никак не связано с drupal, но даст вам лучшее представление о том, как он работает.
источник