Моя команда столкнулась с подобной проблемой. Мы используем git для версии нашего собственного пользовательского кода, такого как плагины и тема, которую мы пишем. Мы используем Composer для управления такими зависимостями, как плагины, которые мы не написали. Мы проверяем файлы composer.json и composer.lock в git, чтобы синхронизировать всех. Предполагается, что каждый разработчик будет тянуть ветку git master и composer update
часто запускать свои игровые приставки, чтобы каждый оставался в курсе событий.
В базе данных разработчики в основном заботятся о конфигурации, и мы часто используем WP-CLI для синхронизации конфигурации. Например, у нас есть сценарий оболочки, который запускает команду WP-CLI для включения или отключения плагинов для каждого хоста; например, некоторые плагины используются только на нашем хосте размещения контента, поэтому скрипт может быть запущен на любом хосте и активирует только соответствующий набор на этом хосте. Некоторая конфигурация, которая требует слишком много времени для написания сценария, просто документируется и при необходимости воспроизводится вручную.
У нас также есть сценарий perl, который полностью клонирует базу данных с нашего промежуточного сервера контента на хост QA или dev. Разработчики могут использовать это периодически, если им нужен весь текущий контент, хотя это обычно менее важно, чем иметь код и конфигурацию. Скрипт выполняет следующие задачи:
- mySQL dump базы данных сервера промежуточного содержимого, изменение имен таблиц, загрузка в базу данных целевого сервера
- используйте wp-cli для изменения ссылок на промежуточный сервер в базе данных для ссылки на целевой сервер
- синхронизировать каталог загрузки на целевом сервере с загрузками сервера подготовки контента
Есть несколько многообещающих решений для быстрого создания версий базы данных. VersionPress и Mergebot - это те, кого я знаю, и могут быть другие.
Я написал более технические подробности о том, как мы настроили WordPress для работы с git и Composer в моем блоге. Было необходимо работать с ядром WordPress в его собственном каталоге, чтобы сделать четкое разделение между кодом, который мы хотим поддерживать в git и ядре WordPress. Мы рассматриваем сам WordPress как зависимость и управляем им с помощью Composer.