Wordpress CI / CD конвейер - PullRequest
1 голос
/ 12 июня 2019

Я строю конвейер Wordpress CI / CD на основе Docker и некоторых пользовательских сценариев развертывания. Поток довольно стандартный:

- Dev-машина загружает полный архив веб-сайта и дамп базы данных во внешний репозиторий
- Существует похожая докерская инфраструктура Wordpress (web, db, app), используемая на компьютере разработчика и на производственных серверах
- При запуске развертывания производственная машина загружает код и базу данных в локальный репозиторий и выводит из него новый Docker

Все это прекрасно работает, но проблема, с которой я сталкиваюсь, заключается в том, что Wordpress по умолчанию включает полный URL в редактируемые страницы. Поэтому, если разработчик добавляет изображение на страницу, на странице базы данных будет код

<img src="sampledevmachine.local/image1.jpg">

Теперь есть два решения, которые приходят к нему. Либо сценарий развертывания выполняет поиск и замену в файле дампа базы данных, либо на компьютерах разработчиков может быть настроен их файл hosts, чтобы Wordpress считала, что к нему обращается производственный домен.

Оба эти решения звучат немного "грязно". Поэтому мне любопытно, как другие подойдут к такой проблеме и как бы вы установили «элегантный» CI / CD для Wordpress.

1 Ответ

1 голос
/ 12 июня 2019

Честно говоря, я не думаю, что есть элегантные подходы CI / CD для WP. «Стандартный» способ изменения URI в WP - поиск / замена, но с использованием инструмента, а не экспорта SQL. Это связано с тем, что большое количество данных сериализуется как массивы / объекты PHP, и они молча разбиваются при замене строки (если длина строки не одинакова).

Для развертывания в различных средах необходимо запустить инструмент wp search-replace с параметрами

  • --all-tables: просто чтобы быть уверенным.
  • --precise: для работы с сериализованными массивами / объектами PHP
  • --skip-columns=guid: пропустить столбцы guid в некоторых таблицах, так как некоторые из них используют имя домена как часть GUID.

Вам может понадобиться запустить этот инструмент несколько раз, так как разные части WordPress хранят домен по-разному (иногда со схемой подключения или без нее)

Возможно, стоит упомянуть, что я также видел, что в коде есть конвейер развертывания, но изменения в БД / контенте выполняются с помощью плагина репликации, который может выдвигать контент и в то же время обновлять ссылки, такие как Duplicator или All-in-One WP Migration. Я никогда не использовал это, поэтому я не могу много комментировать.

...