Чи надруковані Друш і Фінг?


24

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

Досліджуючи, як використовувати Дженкінса в робочому процесі Drupal Dev, я натрапив на повідомлення про використання Phing з Друшем і Дженкінсом . Тож я подивився на Phing і не можу побачити, що це робить, що неможливо зробити, використовуючи команди Drush через скрипти оболонки.

Я намагаюся вирішити, чи є сенс мені вкладати час у навчання, як користуватися Phing. Я шукаю ясності, яку користь я отримаю, включивши команди Phing vs. Drush за допомогою сценарію Shell.

Отже, моє запитання стосується тих, хто використовує Phing з Drush та Jenkins: чим відрізняються Drush / Drush-Make і Phing? Чому ви вирішили почати використовувати Phing у своєму процесі?

Спасибі

Відповіді:


15

Відповідь, що вони, звичайно, не є зайвими.

Це правда, що той самий кінцевий результат можна досягти, використовуючи скрипт bash, що включає команди drush (принаймні будівельну частину). Але, якщо ми хочемо зробити це - інтегрувати наш процес у структуру CI, як JenkinsCI, то використання чогось на зразок фінгу (мураш або капістрано можна замінити тут) - це шлях.

За допомогою phing ми можемо розбити процес збирання на окремі сегменти, які можуть інтелектуально повідомляти про Дженкінса.

Так, наприклад. Скажіть, що як частина мого процесу збирання, я використовую drush для включення двох модулів, вузла і mustfail. Тоді збірка повинна вийти з ладу. Але якщо все, що ми робимо, це сказати JenkinsCI виконати наступну команду оболонки, JenkinsCI скаже, що збірка ПАРОЛО:

drush --quiet --yes @staging en node shouldfail

Очевидно, що це неправильно. Однак якщо замість цього ми використовуємо мурашник або фінг для визначення того самого процесу, ми можемо також додати певну логіку помилок, яку розуміє Дженкінс, і тому не вдається як слід. Наступний скрипт побудови 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>

Мурашник та фінг майже однакові. Перевага розробників PHP у використанні phing полягає в тому, що вони можуть зручніше поширювати phing.

Що стосується розробки Drupal, а також як drush є настільки ж хорошим, я не бачу надто великого значення в розширенні phing, і думаю, що виконання завдань exec буде достатньо для створення розумного шаблону збірки.

Ну а для того, щоб відповісти на моє запитання, я закінчив вкладати час, щоб розібратися у фінгу. Це насправді досить інтуїтивно, і це не займе багато часу, щоб зрозуміти.


2

Зараз для Phing доступне завдання Drush :

Замість використання exec ви можете включити Drus-команди на зразок цього ...

  <drush command="site-install" assume="yes"">
        <option name="locale">uk</option>
        <option name="site-name" value="${sitename}" />
        <param>expert</param>
  </drush> 

Я мало використовував drushtask мало, і мені не вдалося успішно взаємодіяти з попередженнями про барабани. Я в кінцевому рахунку відмовився від цього, тому що я вважав це обмежуючим в інших аспектах.
DKinzer

Було б непогано пояснити проблеми / обмеження, які виникли із завданням Drush у підтримці чи запиті на функцію у черзі випуску ( drupal.org/project/isissue/phingdrushtask ). Щоб інші могли дізнатися і, можливо, надати відповіді.
П'єр Буйле

2

Сценарії Phing - це заміна скриптів оболонок, щоб контролювати виконання декількох команд та їх результати. Drush - це інтерфейс CLI для команд для взаємодії з Drupal-сайтом або пов'язаними з Drupal. Вони доповнюють один одного.


1

Ваше питання: Чи перекриваються Phing і Drush?

TLDR; версія: Сорта. Але переважно ні.

Нескорочена версія: друш і фінг перетинаються лише в декількох випадках. Головним чином, демпінг та архівування веб-сайту було б одним із великих перекриттів. Ви можете це зробити у фінгу, але вам доведеться написати багато завдань. Ви можете скинути базу даних, але drush робить це так легко за допомогою однієї команди. Phing робить це, але вам просто потрібно написати сценарій командного рядка. Там, де фінінг сяє - це можливість запускати тести на phpunit, запускати зовнішні інструменти, як баночка, яка стискає ваші файли css, створює та пакує збірку вашого drupal-сайту / програми тощо.

Що таке фінг?

Phing - це по суті пілот, який виконує команди. Якщо ви знайомі з Ant, Phing - це насправді близький порт від Ant (Це двоюрідний брат на базі Java). Phing написано на PHP.

Ви можете використовувати Phing для автоматизації завдань та звітування про результати на основі цих завдань. Друш, з іншого боку, просто виконує завдання. Неможливо визначити оцінку результатів.

Приклад використання корпусу для phing / drush:

Мені потрібно натиснути, щоб скинути базу даних і фінг scpв пакет від prod до тестування.

Phing може зберігати ці налаштування у зовнішньому build.propertiesфайлі та надсилати їх у ваш проект. Він також може зберігати різні налаштування для кожного середовища. Наприклад, Phing може символізувати останнє завершене, яке було перекинуто натисканням на правий корінь документа.

Як все це працює?

Phing керується xml. Він споживає файл build.xml і приймає атрибути (іноді їх називають цілями) та виконує прості команди.

Більше про це:

Настійно рекомендую переглянути цей слайд-файл керівниками проекту Phing:

http://www.slideshare.net/michieltcs/building-and-deploying-php-applications-with-phing

Це дасть вам високий рівень та певне використання (плюс код) phing. Це жодним чином не пов'язане з drupal, але це дасть вам краще уявлення про те, як це працює.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.