Я пытаюсь развернуть сайт PHP с использованием Capistrano.Веб-сайт состоит из 4 компонентов (кода веб-интерфейса и 3 веб-сервисов), каждый из которых хранится в собственном git-репозитории.Я хочу развернуть все 4 компонента в единую древовидную структуру (см. Ниже), чтобы переключение между версиями веб-сайта было бы таким же простым, как перемещение «текущей» ссылки.
Я вижу, что по умолчанию развертывание Capistrano предназначено для развертывания одного репозитория.Если я правильно понимаю, даже использование чего-то вроде Caphub мне не поможет, поскольку 4 компонента будут развернуты в 4 разных дерева, что сделает откат к определенной точке времени громоздким процессом.
Есть ли способ получить приведенную ниже конфигурацию с помощью Capistrano?Какова лучшая практика для этой ситуации?
root/
| current/
| releases/
| | <timestamp/>
| | | frontend/
| | | webservice-1/
| | | webservice-2/
| | | webservice-3/
| | <timestamp/>
| | | frontend/
| | | webservice-1/
| | | webservice-2/
| | | webservice-3/
| shared/
Обновление:
Завершить, используя решение подмодулей, как предложено в принятом ответе.Я создал хранилище веб-сайтов, содержащее 4 подмодуля и хранилище для развертывания веб-сайтов, где я храню файлы развертывания capistrano.Я написал простой сценарий оболочки, чтобы избавить меня от необходимости обновлять подмодули при каждом развертывании (довольно громоздкий процесс!).Для развертывания я запускаю скрипт (источник ниже), а затем запускаю «cap deploy».
#!/bin/sh
git clone gitserver:path_to_git_repositories/website.git cloned
cd cloned
git submodule init
git submodule update
git submodule foreach git pull origin master # updating all modules to the current code in the master branch
git submodule foreach git add .
git commit -a -m "Updating submodules"
git push origin master
cd ..
rm -rf cloned