Githubizer: автодеплой с Гитхаба на сервер

от автора

Интересно, скольким из вас приходилось хотя бы иногда, но повторять рутиные действия для настройки автодеплоя с гитхаба на сервер: создать ssh-ключ, добавить его для репозтория проекта на Гитхабе, создать скрипт, который будет слушать какой-то адрес, добавить вебхук в интерфейсе гитхаба, который будет дергать этот скрипт… Уфф… А что, если я скажу вам, что автоматизировал все эти действия по-максимуму? Да, теперь вам нужно выполнить всего пару команд и автодеплой запущен и работает! И все это благодаря Гитхабайзеру 🙂

Итак, адрес репозитория github.com/chvanikoff/githubizer
Как этим пользоваться:

Теперь детальнее:
1. Клонируем репозиторий Гитхабайзера
$> git clone github.com/chvanikoff/githubizer
2. переходим в директорию репозитория и правим конфиг под себя
$> cd githubizer && vim priv/application.config
3. Компилируем и запускаем Гитхабайзер:
$> make all run

Подробнее о конфиге (в нем есть комментарии на английском, здесь напишу на русском):

{http_server, [         %% количество неблокирующих акцепторов для обработки запросов от Гитхаба. Сомневаюсь, что придется когда-нибудь менять, но возможность есть 	{nba, 10},         %% порт, который будет слушать сервер, обрабатывающий запросы от Гитхаба 	{port, 8989},         %% URL, который будет запрашивать Гитхаб при пуше в него 	{url, ["/secret/hook/url"]} ]}.  {github, [         %% Логин пользователя на Гитхабе 	{username, "login"},         %% Email пользователя на Гитхабе 	{email, "email"},         %% Пароль пользователя, опять же на Гитхабе 	{password, "m3g1p1$$w0rd"},         %% Имя репозитория (например - githubizer) 	{repository, "repo_name, not url!"} ]}.  {server, [         %% Директория на сервере, в которой будет лежать ваш проект (должна быть пустой). Скоро добавлю замену {REPO} на имя репозитория, но пока этого нет 	{docroot, "/home/chvanikoff/erlang/{REPO}"},         %% Адрес сервера (в виде домена, или IP-адреса) 	{domain, "http://site.com"} ]}. 

Что произойдет после совершения вышеописанных действий:

  1. Будут созданы, если не существовали ранее, ssh-ключи ~/.ssh/githubizer и ~/.ssh/githubizer.pub
  2. Они будут добавлены для репозитория на Гитхабе
  3. Репозиторий будет склонирован локально (если директория, указанная в конфиге server.docroot, пустая — иначе считается, что нужный репозиторий уже склонирован туда)
  4. Будет запущен маленький веб-сервер (Cowboy) c 2 http-хендлерами, который будет слушать указанный в конфиге порт и обрабатывать 2 типа запросов: запросы к адресу из конфига (напр. «secret/hook/url») и все остальные. Отвечать будет 404 на все запросы, однако на запросы первого типа будет производиться git pull из директории репозитория
  5. «Вот и все, ребята» (с)

P.S.: код может быть местами грязным — не пинайте, я все еще учусь 🙂

ссылка на оригинал статьи http://habrahabr.ru/post/171195/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *