У меня есть свой, так сказать, «бюджетный» пайплайн непрерывной миграции. Это набор shell-скриптов для выполнения таких задач, как:
- выгрузка базы данных phpBB, вложений и прочего с удалённого сервера
- создание и управление экземплярами Discourse
- применение конкретных настроек сайта при создании экземпляра Discourse из шаблонного экземпляра
- резервное копирование и восстановление
- запуск миграции с использованием определённого набора скриптов импорта из репозитория Git
- выполнение задач после миграции
По сути, это позволяет мне работать на предварительно мигрированном экземпляре Discourse dctemplate, с которым я могу экспериментировать. Я продолжаю настраивать параметры Discourse по своему усмотрению.
Ночью я выгружаю данные с действующего phpBB и выполняю новую миграцию на новом экземпляре Discourse (dcstaging), созданном из самого актуального шаблона.
Разумеется, это занимает несколько часов, поэтому у меня также есть локальный phpBB с очень небольшой базой данных, который я использую для тестов и улучшения скриптов миграции. Я могу выполнять относительно быстрые миграции для тестирования на другом экземпляре Discourse (dcdev).
Таким образом, дневной рабочий процесс тестирования выглядит примерно так:
Сделал изменения в шаблоне, результат меня устраивает:
./dc_template_create.sh dctemplate
Ой, я ошибся в шаблоне. Восстанавливаю его до предыдущего состояния:
./dc_template_restore.sh dctemplate
Выполняю быструю миграцию для проверки каких-то вещей:
# создаём новый экземпляр dcdev из dctemplate (и применяем конкретные настройки сайта к dcdev)
./dc_template_restore.sh dcdev dctemplate
./dc_migrate.sh dcdev # запускается с репозиторием скриптов миграции, специфичным для этого экземпляра
Выполняю длительную миграцию ночью с реального, действующего phpBB:
./dc_template_create.sh dctemplate
./dc_template_restore.sh dcstaging dctemplate
./phpbb_pull.sh
./dc_migrate.sh dcstaging
sleep 300
./dc_rake.sh dcstaging # дополнительные задачи после миграции, не обрабатываемые импортером (создание модераторов, детальная разметка тегов, перемещение некоторых тем и т. д.)
Если кому-то это достаточно интересно, я могу немного привести это в порядок и поделиться.