Автодеплой проекта с github.com

Как-то понадобилось автоматизировать выгрузку свежих коммитов на сервер.

Опыта никакого не было, а после гугления оказалось что на русском языке по этой теме толком ничего нет. Может плохо гуглил?

Автодеплой с github.com происходит с помощью webhooks.

В простейшем случае, когда происходит push в репозиторий (по умолчанию только push), срабатывает webhook, который просто-напросто запрашивает указанный URL, после чего на сервере запускается скрипт, затягивающий изменения с github'а.

---

Настройка webhook

  1. Переходим в раздел настроек проекта Settings, вкладка Webhooks & Services и добавляем webhook Add webhook (обычно на этом этапе запрашивается пароль).
  2. Вписываем адрес в поле Payload URL, допустим www.yourdomain.com/gitpull.php. Остальные настройки оставляем как есть.
  3. теперь нужно создать эту самую страницу на сервере.
    Содержимое файла gitpull.php
    <?php
    system('git pull');
    ?>
  4. ???
  5. PROFIT!

GitPullTerrier

Специально в демонстрационных целях создал мини репозиторий на github.com.

  • Создаём форк этого репозитория
  • настраиваем его как описано выше, указав адрес www.yourdomain.com/gitpull.php
  • затем клонируем форк на свой сервер (где уже настроен php)
  • проверяем работоспособность /index.php и /gitpull.php
  • делаем изменения и проталкиваем на github.com
  • после чего изменения должны появиться на сервере

Проверить удачно ли сработал хук можно на той-же странице настройки хуков. Ну и по изменениям на сервере :-)

 

Приватные репозитории

Настройка webhook'ов в приватных репозиториях отличается тем, что нужно сгенерировать ssh-ключи для пользователя на сервере (от имени которого запускается скрипт) и загрузить эти ключи в настройках репозитория, в разделе Deploy keys.

Клонировать репозиторий при этом нужно по ssh-протоколу. Что логично.

blog comments powered by Disqus
π