Когда ты хостишь репозитории сам, то можешь сделать какие угодно хуки и по push’у в свой репозиторий делать что угодно - например, рендерить свой сайт. Но когда ты перемещаешь эти репозитории на GitHub, приходится пушить изменения и туда, и себе на сервер, чтоб они там отрендерились. Хостить сайт на гитхабе мне не хочется, да и это, опять же, лишняя работа - надо будет рендерить его в ветке gh-pages
, никакого фана.
В какой-то момент мне надоело (на эту фразу уже можно прямо макрос себе завести, “сделать новый пост с ‘мне надоело’” :)), и я написал вебшлюху - такую маленькую, на 250 строк, программу на Go, которая слушает себе определëнный порт, и когда ей приходит вебхук от гитхаба, исполняет заданную команду. Написал я еë потому, что в инете такой не нашëл (нашëл нерабочую на питоне с кошмарным кодом) - что довольно странно.
Работает она просто:
webhooker -p 1234 piranha/webhooker:master='echo new stuff arrived!'
Всë, что до =
- это регулярное выражение, которое применяется к строке user/repo:branch
пришедшего вебхука, а после =
- команда, которую нужно выполнить. Таких правил можно указать сколько угодно, а когда их задолбает писать аргументами - можно перенести в любой файл (по одному правилу на строку) и использовать его как webhooker -c path/to/rules
.
Работает безукоризненно, память не пожирает почëм зря (в рабочем состоянии после месяца работы - 2 Мб RSS), что еще надо? :-) Enjoy!