Являются ли Драш и Финг излишними?


Я установил JenkinsCI на наш сервер разработки, чтобы начать автоматизировать процесс сборки и тестирования нашей разработки. Я использую Jenkins с плагином Git и некоторыми командами Drush с помощью сценария оболочки.

Исследуя, как использовать Дженкинса в моем рабочем процессе разработки Drupal, я наткнулся на сообщение об использовании Финга с Драшем и Дженкинсом. Поэтому я посмотрел на Phing и не вижу, что он делает, чего нельзя сделать с помощью команд Drush с помощью сценариев оболочки.

Я пытаюсь решите, имеет ли смысл для меня тратить время на изучение того, как использовать Phing. Я ищу некоторую ясность относительно того, какую выгоду я получу, включив Phing против Команды Drush с помощью сценария оболочки.

Итак, мой вопрос для тех, кто использует Phing с Drush и Дженкинсом: чем отличаются Drush/Drush-Make и Phing? Почему вы решили начать использовать Phing в своем процессе?

Спасибо

Author: kiamlaluno, 2012-04-30

4 answers

Ответ заключается в том, что они, безусловно, не являются избыточными.

Это правда, что можно достичь того же конечного результата, используя сценарий bash, который включает команды drush (по крайней мере, часть построения). Но, если то, что мы хотим сделать, - это интегрировать наш процесс в структуру CI, такую как JenkinsCI, то использование чего-то вроде phing (здесь можно заменить ant или capistrano) - это правильный путь.

С помощью phing мы можем разбить процесс сборки на отдельные сегменты, которые могут отчитайтесь перед Дженкинсом разумным способом.

Так, например. Скажем, что в рамках процесса сборки я использую drush для включения двух модулей, node и shouldfail. Тогда сборка должна завершиться неудачно. Но если все, что мы сделаем, это скажем Дженкински выполнить следующую команду оболочки, Дженкински скажет, что сборка ПРОШЛА:

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>

КСТАТИ, ant и phing почти идентичны. Преимущество для разработчиков PHP в использовании phing заключается в том, что они могут более комфортно расширять phing.

Что касается разработки Drupal и drush, то я не вижу особой ценности в расширении phing и думаю, что для создания умной сборки будет достаточно выполнения задач exec шаблон.

Ну, чтобы ответить на мой вопрос, я в конечном итоге потратил время на то, чтобы разобраться в финге. На самом деле это довольно интуитивно понятно, и это не займет слишком много времени, чтобы понять.

 16
Author: DKinzer, 2012-05-03 12:19:39

Теперь для Phing доступна задача Drush:

Вместо использования exec вы можете включить команды Drush, подобные этой...

  <drush command="site-install" assume="yes"">
        <option name="locale">uk</option>
        <option name="site-name" value="${sitename}" />
        <param>expert</param>
  </drush> 
 2
Author: andrewmacpherson, 2012-09-29 17:51:37

Скрипты Phing являются заменой скриптов оболочки для управления выполнением нескольких команд и их результатами. Drush - это интерфейс командной строки для команд для взаимодействия с сайтом Drupal или связанным с Drupal. Они дополняют друг друга.

 2
Author: Pierre Buyle, 2013-02-28 16:21:02

Ваш вопрос: Пересекаются ли Phing и Drush?

TLDR; версия: Вроде того. Но в основном нет.

Полная версия: Драш и финг пересекаются лишь в нескольких случаях. В основном, сброс и архивирование веб-сайта были бы одним из самых больших совпадений. Вы могли бы сделать это в финге, но вам пришлось бы написать много задач. Вы могли бы сбросить базу данных, но drush делает это так легко с помощью одной команды. Финг делает это, но вам просто нужно написать команду строчный сценарий. Где phing сияет - это возможность запускать тесты phpunit, запускать внешние инструменты, такие как jar, который сжимает ваши css-файлы, создавать и упаковывать сборку вашего сайта/приложения drupal и т. Д.

Что такое финг?

Финг, по сути, является пилотом, который выполняет команды. Если вы знакомы с Ant, Phing на самом деле является близким портом от Ant (это двоюродный брат на основе java). Phing написан на PHP.

Вы можете использовать Phing для автоматизации задач и составления отчетов о результатах на основе эти задачи. Друш, с другой стороны, просто выполняет задания. Он не может определить, оценить результаты вывода.

Пример использования для 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, но это даст вам лучшее представление о том, как это работает.

 1
Author: chrisjlee, 2012-07-24 16:23:11