В системе можно выделить ядро и модули, периодически ядро и модули обновляются причем каждый модуль работает с своей версией ядра. Вижу следующие варианты обновления:
1. На сервере имеется общея CMS, проекты использую одно ядро и системные модули в плане кода Индивидуальные настройки, шаблоны и модули вынесены в каталоги проекта. Периодически добавляется версия ядра и проекты которые подписаны на обновления просто переключаются на новую версию.
2. Имеется раздел в админ части который отображает информацию о том что появилась новая версия ядра и модулей, соответственно обновление происходит через интерфейс админки.
Хотелось бы услышать может быть есть еще варианты? Так же плюсы и минусы.
Можно настроить каждый проект под разные версии пакетов, можно проверять на наличие обновлений, короче ресолвинг зависимостей и их версий можно полностью отдать на откуп composer.
схема обновления для меня это не просто команда из консоли,а это функционал позволяющий произвести проверку на выход новой версии модуля, скачивание и обновление модуля, откат на прежнее состояние если что то пошло не так и т.д и т.п . Если composer может реализовать все эти задачи то тогда вопросов нет.
@dmitriylanets да, можно реализовать на composer или частично его использовать. Там есть механизмы контроля версий, проверка обновлений и т.д. Просто это все сделано под cli.
Я лично сделал бы так. Если зависимости мои (модули, плагины и т.д.) и они приватны, можно поднять satis (менеджер репозиториев для composer) на своем сервере, ну или если у вас все на github/packagist, то проблем как бы и не будет. Можно пакеты через composer/installers ставить, словом вариантов масса.
Затем я реализовал бы на основе composer свой инструмент для проверки наличия новых версий (можно спокойно взять из composer.lock текущие версии зависимостей, посмотреть какие версии у нас появились в репозиториях и сформировать список).
Обновление и откат версий чуть сложнее, так как нужно еще думать о секьюрности и все такое, хотя так же вопрос решаемый.
То есть это не так что бы готовое решение, просто можно механизмы контроля версий зависимостей и их скачку реюзать, уже выходит сильно проще.