Как я могу использовать git, чтобы автоматически обновлять все рабочие сайты Laravel?

У меня есть скелет сайта, построенный на Laravel 4 в частном репозитории git на Bitbucket. У каждой нашей очень маленькой команды есть собственная локальная копия для разработки, а также версия сайта в среде разработки, которую мы используем для демонстрации клиентам. Кроме того, общедоступна фирменная производственная версия сайта, и мы находимся в процессе создания двух или трех новых сайтов на основе того же репозитория git.

Теперь установка новых сайтов до смешного проста... но я действительно не знаю, как поддерживать их правильное обновление, за исключением входа в систему и извлечения вручную каждый раз, когда мы делаем обновление. В идеале я хотел бы иметь возможность указать, что фиксация в репо запускает все производственные среды для получения новой версии.

Легко ли это сделать, и если да, то как? Мы ожидаем выпускать все больше и больше сайтов на основе шаблона, и я бы предпочел правильно настроить его с самого начала, а не собирать что-то вместе после того, как это станет проблемой.


person Joel Hinz    schedule 07.05.2014    source источник
comment
Я бы не стал. Git не предназначен для развертывания, он предназначен для контроля версий. Используйте правильный инструмент для правильной работы. Кроме того, что, если кто-то совершит неработающий код?   -  person GordonM    schedule 07.05.2014
comment
Я бы послушал @GordonM, однако вы могли бы попытаться изучить веб-хук, например github.com/Coppertino/github. -webhook и git-хуки в целом git-scm.com /book/ru/Настройка-Git-Git-Hooks   -  person OneOfOne    schedule 07.05.2014
comment
Вы можете использовать хук на стороне сервера для развертывания по нажатию. Вы также можете проверить системы непрерывной интеграции, такие как Jenkins, чтобы увидеть, соответствуют ли они вашим требованиям.   -  person Kien Truong    schedule 07.05.2014
comment
Спасибо @GordonM - точка зрения принята. Если это справедливо считается угрозой безопасности, то вместо этого я буду искать более разумное решение или просто сделаю это вручную.   -  person Joel Hinz    schedule 07.05.2014
comment
Спасибо @OneOfOne и Dikei — хорошие комментарии!   -  person Joel Hinz    schedule 07.05.2014
comment
Не за что, еще одна идея: иметь хук перед фиксацией на стороне разработчика, чтобы убедиться, что ничего не сломано перед фиксацией, чтобы вы не подтолкнули сломанную фиксацию.   -  person OneOfOne    schedule 07.05.2014
comment
Это звучит как очень хорошая идея.   -  person Joel Hinz    schedule 07.05.2014
comment
Я предпочитаю иметь совершенно другую локальную среду и промежуточный сервер, который выглядит точно так же, как рабочий. Что я делаю, так это отправляю в промежуточную ветку, позволяю Deeployer позаботиться о развертывании на промежуточной машине, запускаю мои тесты, а затем отправляю ту же фиксацию в производственную ветку.   -  person Antonio Carlos Ribeiro    schedule 07.05.2014
comment
Это имеет смысл @AntonioCarlosRibeiro. Я обязательно подумаю.   -  person Joel Hinz    schedule 07.05.2014


Ответы (1)


Есть несколько инструментов, которые помогут вам в этом, например Capistrano, но я не смог найти ни одного, написанного на PHP, который мог бы сделать это с помощью хуков github/bitbucket, поэтому я создал пакет, который поможет мне в этом: https://github.com/antonioribeiro/deeployer.

Он использует Laravel Envoy, чтобы предоставить некоторые сценарии для вашего процесса развертывания.

Использование Envoy позволяет легко запускать задачи вручную в командной строке, выполнив следующие действия:

cd <your deployer directory>

envoy run <task name>

Примером может быть:

envoy run https://github.com/antonioribeiro/deeployer:master
person Antonio Carlos Ribeiro    schedule 07.05.2014
comment
Выглядит очень интересно - спасибо! Я внимательно посмотрю, а пока проголосую. :) - person Joel Hinz; 07.05.2014
comment
@ Антонио Карлос Рибейро, могу ли я вручную (из командной строки) запустить развертывание вместо веб-перехватчиков? - person Anam; 15.05.2014