-
Notifications
You must be signed in to change notification settings - Fork 22
Деплой приложения на продакшен
Деплой осуществляется в полуавтоматическом режиме. Схема файлов и билдов выглядит следующим образом: (исходник).
Так как добавление коммита в мастер-ветку сразу инициирует деплоймент с запуском обновлений и т.п.,то перед этим необходимо создать бэкап текущей базы: drush @dru.prod sql-dump --result-file="$HOME/backups/drupalru--<YYYY.MM.DD>.sql" --gzip, где YYYY.MM.DD - это, конечно же, дата создания дампа. Например, drush @dru.prod sql-dump --result-file="$HOME/backups/drupalru--2018.06.06.sql" --gzip.
Вся процедура деплоймента заключается в добавлении коммитов в master ветку.
Это событие запускает автоматический деплой, которое осуществляется с помощью сервиса Zen.CI. Главной задачей последнего является создание бэкапа, обновление репозитория на сервере и запуск нужных скриптов. После того, как zen.ci актуализирует репозиторий, находящийся по адресу ~/repo
(указано в yml-описании), он выполняет сценарий описанный в файле .zenci.yml (прогресс выполнения сценария можно наблюдать здесь) и запускает скрипт деплоя. Этот скрипт занимается созданием нового "билда", который состоит из:
* копирования файлов репозитория, за исключением папки .git
* копирования с заменой файлов из "эталонной" папки. Она содержит секретные файлы конфигураций, подтверждения владения доменом и симлинка на папку с файлами.
* установки root-симлинка на этот билд. Root-симлинк - это адрес, куда обращается сервер для обработки запросов.
* запуска обновлений, очистки кэша
* удаления устаревших билдов, превышающих количество максимально допустимых для хранения, указанных в конфигурации store_versions
сценария
* создания дампов базы для dev и local окружений. Dev окружение - это сайты dev.drupal.ru и stage.drupal.ru. Local - это локальные копии разработчиков.
После успешного деплоймента последней версии кода на прод, необходимо обновить dev/stage базы, для которых автоматически были созданы дампы. Необходимо запустить на dev-сервере:
cd $HOME/domains/dev.drupal.ru/profiles/drupalru/scripts/sync/dev
./sync-db.sh @dru.dev
./sync-db.sh @dru.stage
На этом всё. Далее следует описание окружения, для корректной работы скриптов, которое уже настроено.
Для корректной работы скриптов, должны быть настроены:
-
Продакшен сервер
- Drush alias
@dru.prod
- Drush alias
@dru.temp
- тот же прод, но с другой базой. Там будут проводиться "грязные делишки" во время подготовки дампов. - Переменные окружения:
-
DRUPALRU_DEV_DUMP
, которая должна содержать полный путь до места, где будет храниться дамп, включая само название, заканчивающееся расширениемsql
. Как видно из названия переменной речь идёт о дампе, для dev и stage окружений, который может содержать (и обычно содержит) приватные данные. Важно! Файл должен содержать минимум 128-битный хэш для того, чтобы имя файла было недоступно для злоумышленника. -
DRUPALRU_TEAM_ROLE
- название роли, пользователи, которой будут экспортированы в dev/stage-дамп для переноса на соответствующий сервер.
-
- Drush alias
-
Dev/stage сервер
- Drush alias
@dru.dev
- Drush alias
@dru.stage
- Переменные окружения:
-
DRUPALRU_DEV_DUMP_SOURCE
, полный путь до файла дампа для dev/stage окружения на продакшен сервере. Должно быть доступно по http, а имя совпадать с переменнойDRUPALRU_DEV_DUMP
на прод сервере.
-
- Drush alias
Если переменная DRUPALRU_DEV_DUMP
на прод-сервере содержит значение $HOME/domains/drupal.ru/sites/default/files/prod-dump-xxx.sql
, то значение переменной DRUPALRU_DEV_DUMP_SOURCE
на дев-сервере должно быть https://drupal.ru/sites/default/files/prod-dump-xxx.sql.gz
. Обратите внимание на различающиеся расширения в имени файла. При создании дампа он будет сжат drush'ем и к нему автоматически добавится суффикс .gz
.