fornit1917
@fornit1917

Как лучше хранить проект в VCS и деплоить его?

Здравствуйте.
Я люблю деплоить/обновлять проекты на боевых серверах используя систему контроля версий (сейчас в основном SVN, будущие проекты планируются на GIT).
Раньше я почти никогда не хранил в VCS всякие используемые сторонние библиотеки или фреймворки: на сервере устанавливал при начальном деплое их глобально для всей системы через PEAR или качал руками. А сейчас я присматриваюсь к composer, мне он нравится, но он устанавливает библиотеки прямо в папку проекта. И вот я задался вопросом: правильнее эти библиотеки тоже хранить в VCS, или лучше в игнор добавить всю папку vendor, а при необходимости делать composer install?

Кроме того: зачастую часть библиотек, устанавливаемых через composer, на продакшене не нужны: всякие так PHPUnit и Codeception. Они нужны только разработчикам. Стоит или не стоит их хранить в VCS и выкладывать на продкшен вместе с остальным кодом?
Да и даже некоторые библиотеки, которые нужны для работы приложения, с собой тянут ненужные файлы: тесты, демки и т.д. Тоже как-то не хочется ими забивать репозиторий и продакшн-сервер.
Была у меня мысль, что из полной версии для разработки можно удалять каким-нибудь скриптом или phing-ом ненужные на продакшене файлы и оставшийся необходимой код хранить в другой ветке или другом репозитории и деплоить из него. Но опять же сомневаюсь, правильно ли это.

Мне конечно не жалко, можно все-все-все и в репозитории хранить, и на продакшен выкладывать. Но почему-то мне кажется, что это не совсем труЪ. Хочется узнать, как другие с этим поступают и почему.

Заранее спасибо.
  • Вопрос задан
  • 3115 просмотров
Пригласить эксперта
Ответы на вопрос 3
sajgak
@sajgak
1. не знаю как в пыхе, в нодовском npm есть dependances и dev-dependances, соответственно при деплое вытягиваются только продакшн зависимости и в репе хранятся только сами исходники
2. билд проекта в продакшене размером чуть больше со стандартный инет. магазин - обычно сложнее, чем svn up / switch, это, как минимум, редактирование конфигов (вы же не храните в репе пароли к бд?:)), билд клиентского кода сss/js и т.п. Для таких вещей есть куча всевозможных приблуд, я советую использовать www.rexify.org немного трушного перла, неделя написания конфига и деплой происходит одной кнопкой
Ответ написан
Комментировать
dmkuznetsov
@dmkuznetsov
ZCE
У composer'a есть опция require-dev. Возможно это то что вам нужно.

А вообще кто как поступает. Кто-то экономит ресурсы и выкачивает все зависимости при установке. А кто-то думает о целостности проекта и не хочет зависеть от доступности внешних ресурсов, поэтому все хранит в одном репозитории.
Ответ написан
Комментировать
Посмотрите в сторону Grunt. С его помощью можно описать задачу 'deploy', к примеру, которая будет выполнять все необходимые действия - вытягивать нужные зависимости, менять конфиги, собирать JS/CSS, раскладывать по серверам и т.д. Саму задачу можно запускать вручную через командную строку, можно ей передавать
grunt deploy --environment='production'
Соответственно, можно задачу повесить хуком на событие GIT (к примеру, на мерж в мастер).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы