Интересно, скольким из вас приходилось хотя бы иногда, но повторять рутиные действия для настройки автодеплоя с гитхаба на сервер: создать ssh-ключ, добавить его для репозтория проекта на Гитхабе, создать скрипт, который будет слушать какой-то адрес, добавить вебхук в интерфейсе гитхаба, который будет дергать этот скрипт… Уфф… А что, если я скажу вам, что автоматизировал все эти действия по-максимуму? Да, теперь вам нужно выполнить всего пару команд и автодеплой запущен и работает! И все это благодаря Гитхабайзеру 🙂
Итак, адрес репозитория github.com/chvanikoff/githubizer
Как этим пользоваться:
Теперь детальнее:
1. Клонируем репозиторий Гитхабайзера
$> git clone github.com/chvanikoff/githubizer
2. переходим в директорию репозитория и правим конфиг под себя
$> cd githubizer && vim priv/application.config
3. Компилируем и запускаем Гитхабайзер:
$> make all run
Итак, адрес репозитория 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"} ]}.
Что произойдет после совершения вышеописанных действий:
- Будут созданы, если не существовали ранее, ssh-ключи ~/.ssh/githubizer и ~/.ssh/githubizer.pub
- Они будут добавлены для репозитория на Гитхабе
- Репозиторий будет склонирован локально (если директория, указанная в конфиге server.docroot, пустая — иначе считается, что нужный репозиторий уже склонирован туда)
- Будет запущен маленький веб-сервер (Cowboy) c 2 http-хендлерами, который будет слушать указанный в конфиге порт и обрабатывать 2 типа запросов: запросы к адресу из конфига (напр. «secret/hook/url») и все остальные. Отвечать будет 404 на все запросы, однако на запросы первого типа будет производиться git pull из директории репозитория
- …
- «Вот и все, ребята» (с)
P.S.: код может быть местами грязным — не пинайте, я все еще учусь 🙂
ссылка на оригинал статьи http://habrahabr.ru/post/171195/
Добавить комментарий