11
Андрей Олищук «Интеллектуальные системы» Continuous integration для DRUPAL

Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush - Андрей Олищук

Embed Size (px)

Citation preview

Page 1: Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush - Андрей Олищук

Андрей Олищук«Интеллектуальные системы»

Continuous integration для DRUPAL

Page 2: Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush - Андрей Олищук

Что такое CI?

Определение

Подход к разработке ПО, который заключается в автоматизации сборки и развёртывания ПО по требованию или расписанию.

Основные черты● Хранение кода в системе контроля версий.● Автоматизация сборки и развёртывания.● Автоматизация тестирования.● Поддержка различных точек развёртывания.

Page 3: Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush - Андрей Олищук

Схема разработки

Page 4: Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush - Андрей Олищук

Схема разработки: development

Локальная разработка● IDE с поддержкой git (PHP Storm, NetBeans), Drupal,

Drush, Apache/MySQL.

● Проблематика: необходимость поднимать каждый сайт локально — отсутствие интеграции и «тяжесть».

Код удалённо по S/FTP● IDE (git и синхронизация), сервер разработки

(ориентация на хост, ориентация на пользователя).

● Проблематика: обслуживание сервера разработки.

Page 5: Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush - Андрей Олищук

Схема разработки: Stage и Production

Page 6: Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush - Андрей Олищук

CI server: git/bitbucket

Модели работы

● All in: все имеют пра-во записи и работаютс ветками под задачи.

● Pull requests: хозяинрепозитория — тимлид.Остальные — черезмеханизм pull request.

Плюшки

● Code review через браузер.

● Интеграция с проектной системой.

Page 7: Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush - Андрей Олищук

CI server: Jenkins

● Получить файлы из git (поддержка веток и тегов).

● Развернуть их посредством SSH (копирование, симлинки).

● Выполнить любые сервисные команды:mysqldump, service apache2 restart, drush cc all и т.д.

● Автоматические тесты.

Page 8: Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush - Андрей Олищук

CI server: Drush

Stage и Production● Очистка кэша.● Резервная копия базы данных.● Активация модулей.

Development● Скачивание и установка дистрибутива и модулей.● Очистка кеша.● Операции с БД (backup & restore).

Page 9: Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush - Андрей Олищук

Миграция настроек из БД

● Features (https://www.drupal.org/project/features): собираются вручную и устанавливаются как модули.

● hook_update_N: размещается в .install и применяется при вызове update.php.

● hook_install: размещается в .install, выполняется при установке модуля.

* В Drupal 8 обещают управление конфигурациями на базе YAML.

Page 10: Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush - Андрей Олищук

Компетенции команды

Системное администрирование● Установка ПО (Jenkins, вероятно git, подготовка сервера

разработки — пользователи, AMP).● Написание bash скриптов (копирование файлов,

симлинки, дампы БД, рестарт служб).

Код● Знание git. Работа с ветками, разрешение конфликтов,

теги — для тимлида. Создание и переключение веток, clone, commit, push, pull — для разработчика.

● Знание IDE (синхронизация, git).

Page 11: Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush - Андрей Олищук

Вопросы?

Спасибо за внимание! Это конец доклада, но не конец истории про развёртывание проектов на Drupal...