Вот как мы это делаем: у нас есть 2 сервера, 1 рабочий и второй, в которых размещаются среды разработки для каждого разработчика и «промежуточная» среда.Код хранится в Git, и мы постоянно поддерживаем ветку master и live.
В двух словах: «живая» база данных экспортируется и распространяется разработчикам с помощью drush.Конфигурация и настройки «сохраняются» с использованием обеих функций, а также hook_update () и hook_install () .Мы используем Feeds
После развертывания У нас есть очень простой сценарий оболочки, который использует drush для копирования действующей базы данных с живого сервера в промежуточную на сервере разработки, и разработчики используют тот же самый простойсценарий оболочки, чтобы вытащить промежуточную базу данных в их собственное окружение.
Конфигурация и разработка, происходящие в базе данных, экспортируются через Возможности и / или с использованием перехватов установки и обновления.Используя эти три метода, мы можем легко развернуть около 99% всех настроек, типов контента и других конструкций, которые обычно существуют только в базе данных.Последние 1% - это вещи, которые легче обрабатываются с помощью шага настройки развертывания, а не пишут запросы в hook_install и hook_update.Возможно 100% развертывание, но иногда это не стоит затраченных усилий.
Наконец, бывают случаи, когда контент необходимо развертывать от этапа к жизни.Вот тут-то и появляется модуль Feeds. Используя каналы и простой файл импорта CSV-файлов, мы успешно создали и экспортировали большие наборы таксономии и даже сложные узлы и наборы узлов.Использование каналов также полезно, когда вам нужен стандартный набор «тестовых» данных для заполнения ваших баз данных разработки.
Когда приходит время развертывать новые функции или настройки, мы объединяем изменения разработчика с основной веткой, развертываеми тестирование на стадии подготовки, которое обычно требует запуска update.php, а затем «импортирует» изменения из новых или обновленных функций.Если все проходит тестирование и контроль качества, изменения объединяются в оперативную ветвь и развертываются в производственной среде.
Самые большие уроки, которые мы усвоили, это:
- , в то время как в функции можно что-то добавить, обновить или установить, обычно это того не стоит.
- Проще всего обойти базу данных разработчиков в процессе разработки, а затем экспортировать, когда пыль осядет, вместо того, чтобы пытаться экспортировать каждое небольшое изменение.
- с использованием модуля diff вместе с функциями спасло нашузадницу много раз.