Как Drush и Jenkins используются вместе для непрерывной интеграции?

30

Я часто слышу модные слова: «непрерывная интеграция», «drush» и «jenkins». Таким образом, зажигает мой интерес.

Как Drush и Jenkins используются вместе для непрерывной интеграции?

Кроме того, почему вы хотите использовать Drush и Jenkins вместе?

chrisjlee
источник

Ответы:

20

Для своих проектов я использую сценарий сборки из команд Drush в задании Jenkins. Я использую проект Phing Drush Task для запуска Drush из сценария сборки Phing . Это позволяет мне использовать существующие задачи Phing (например, копирование файлов, phplint и т. Д.). С помощью Drush этот скрипт сборки

  • Загружает весь нестандартный код (т. Е. Модуль и темы Drupal core и contribs) с помощью Drush Make в./dist
  • Расширяет заполнители в версионной версии settings.php(т. Е. Заменяет ${db_host}фактическое имя хоста БД), копируя ее в только что загруженную ./dist/sites/defaultпапку.
  • Копировать пользовательские модули и темы ./dist/sites/all/modules/customи./dist/sites/all/themes/custom
  • Запустите phplintдля всех файлов из моих пользовательских модулей и тем.
  • Скопируйте все ./distв предварительно настроенный webroot.
  • Запустите drush site-install testingи drush pm-enable simpletestустановите новый сайт, используя базу кода сборки и возможность запуска SimpleTest.
  • Запустите, drush test-runчтобы запустить мой набор тестовых модулей.
  • Беги drush coder-review.

Вот закомментированный шаблон build.xml для использования Drush в Jenkins.

Пьер Буйль
источник
Означает ли это, что ваша CI-среда находится на той же машине, что и ваш php-сервер? Я не понимаю, как вам удается копировать свои собственные источники в сайтах / все / модули / пользовательские (например). Вероятно, это потому, что я не знаю, как работает drush ... но нигде не вижу эквивалента задачи scp / ftp от вашей CI Plateform до Php.
Жан-Реми Реви
1
Да, CI-сервер и веб-сервер, обслуживающий тестовый сайт, находятся на одном компьютере. Конечно, вы также можете скопировать файл из рабочей области CI на хост веб-сервера. Команда rsync Drush может быть использована для этого. Затем Drush можно использовать для запуска команды на компьютере, на котором размещен веб-сервер.
Пьер Буйль
3

Вы можете использовать Phing в Jenkins, поэтому вы можете использовать Drush через http://drupal.org/project/phingdrushtask (Pierre Buyle на SE.COM)

Пользовательский пример:

 <drush command='cc' root="${project.drupal.core.dir}" uri="${env.host.name}" assume="yes">
  <param>all</param>
</drush>
Пол Деллайера
источник