Простой автоматический деплой из репозитория github
20 сентября 2012
Делается довольно легко. Особенно, если деплоить нужно только последний коммит из master
.
- Ставим на сервере git.
- Делаем clone своего репозитория. Лучше использовать URL только для чтения вроде
git://github.com/samdark/yiiframework_ru_cookbook.git
. - Берём код ниже, заменяем
/var/www/path/to/your/git/root
на путь к склонированному репозиторию. Вливаем в вебрут сервера. - Идём на страницу своего репозитория на github → admin → service hooks → WebHook URLs. Добавляем там URL залитого скрипта. Там же смотрим актуальные IP серверов github и сравниваем с теми, что в скрипте.
- Проверяем, что у вебсервера есть права писать в склонированные директории (в том числе и в скрытый
.git
). - Наслаждаемся автоматическим деплоем.
Комментарии RSS по email OK
переменная HTTP_X_FORWARDED_FOR может быть легко подделана...
Кстати, да. Который раз попадаюсь. В Yii же сам фиксил.
Впринципе все что HTTP_X может подделано, это же дополнительные просто заголовки которые сервер передает как есть.
Тоже делаю подобным образом, но через phing, в котором выполняется несколько задач - бекап, миграции и т.п.
Интересно, есть ли такое у bitbucket.
Capistrano наше всё (-: И пофиг, github или bitbucket (((-:
Никита, есть.
none, стоит ли ради такой простой задачки разворачивать Capistrano?
Ну я как бы "рельсовик", поэтому для меня это всё легко и просто и не напряжно, само собой разумеющееся. Мало того, Capistrano мне ещё и необходимый софт устанавливает, если сервер "голый".
Спасибо. Весьма полезно, и кстати не только для гитхаба. Сейчас на работе развернули свой ГитХаб на основе ГитЛаба, там тоже есть поддержка веб хуков. Наверно тоже настроим автодеплой ветки мастер.
Есть ещё брутальный способ: добавить комманду в крон для обновления репы =)
Да, очень простой способ. Только я пользуюсь маленьким шелл-скриптом, который лежит в cgi-bin отдельного подомена, поскольку большая часть проектов не на php.
Код примерно такой: github.com/h4/pullto/blob/master/pullto.sh
Хотелось бы уточнить пару вопросов:
Всегда ли в мастере находится стабильный код? Думаю, что хуки немного для других целей предназначены. Отправить инфо о коммите в багтрекер, для ежедневной сборки и т.д.
Планируется ли Yii добавить в composer (сейчас не нашел). С его помощью можно было бы с не меньшим удобством деплоить проекты на Yii на сторонних серверах.
переменная HTTP_X_FORWARDED_FOR может быть легко подделана...
Это критично для проекта ?
Кстати, а что если репозитарий платный ? Пароль и юзера же вводить необходимо
Автоматическая выкладка должна делаться по ssh-ключам. Для деплоя на гитхабе есть специальные deploy keys. Я недавно об этом написал стаью: designnotfound.ru/deploy-from-private-repo/
Anton, получится что есть теоретическая возможность задёргать редеплой.
Может кто-то поделится решением для вот такой задачи.
Есть репозиторий на сервере. Нужно после каждого push(коммит) обновлять live версию сайта. Репозиторий и live версия находятся на одном сервере.
Очень интересует простой вариант, через хуки и простенький bash скрипт. А не через таких монстров, как phing / Capistrano и тому подобные.
Забыл подписаться на получение новостей :)
Копать следует на тему post-commit hook.
Это получается, что у www должны быть права на запись во всю директорию приложения?
Виктор, да.