2013-03-12 5 views
2

Мы используем Symfony2 в приложении AWS Beanstalk. Для развертывания мы скорректировали Deployment-Script, чтобы сделать композитор установить после того, как приложение было загружено.Symfony2, AWS Beanstalk: как подтолкнуть поставщика как файлы, а не git-подмодули к репо

Несмотря на то, что это теоретически работает, оно имеет некоторые недостатки - в основном, постоянно увеличивающееся время развертывания (что иногда приводит к таймаутам сервера) и увеличению зависимости от доступности других серверов.

Я прочитал, что некоторые люди копируют vendor/* в tmp-dir и перемещают его после развертывания до speed-up the deployment.

Это определенно полезно, но мы часто обновляем наш composer.json, поэтому нам по-прежнему нужно установить композитор в наш процесс развертывания. Мы считаем, что наилучшим подходом является включение всех зависимостей (vendor/*) в качестве файлов в репо и пропускание композиции , устанавливающей во время развертывания.

К сожалению, большинство библиотек включены в качестве git-подмодулей, а AWS не поддерживает подмодули (все файлы должны быть в репо).

Так вот идет мой вопрос:

Что это лучший способ, чтобы удалить весь ГИТ-подмодуль и совершать реальные файлы, а?

Я попытался объединения:

git submodules --recursive foreach 

с How do I remove a submodule? но без Succes.

ответ

1

Вы можете попробовать этот рабочий процесс:

  • создать новую папку релиза
  • чекаут последнюю версию коды в новой папке
  • копии «поставщик» из папки активного выхода в новый папка-релиз
  • запустить «composer.phar установить»

Таким образом, композитор будет обновлять только Весов которые изменились между версиями.

Я использую его успешно с capistrano (есть также специальная версия Symfony под названием capifony), которая может вам помочь. Тем более, что он может хранить клон вашего репозитория git, поэтому отключение новых выпусков происходит намного быстрее, а развертывания и откаты - однострочный.