Как настроить синхронизацию проекта на github и production сервера?

Ситуация такая:

Как только обновляется ветка master на github - автоматически эти изменения должны посылаться на мой сервер. Никаких дополнительных операций производить не надо.

Сервер - это компьютер, который стоит у меня дома и полностью в моей власти. Работает на Win и IIS.
Да, я гуглил долго и упорно. Но то ли чего-то не понимаю, то ли правда никто так не делает, а делают всё руками без автоматизации?

И дополнительный вопрос (но не обязательный):
Как при этом тоже автоматически перезапускать сервер node.js?
  • Вопрос задан
  • 4240 просмотров
Решения вопроса 1
Всё довольно просто - вэб хук на гитхабе, который стучится `постом`, например, к `http://mydomain/fetch`. На сервере висит обработчик который запускает скрипт, который в свою очередь делает `git pull`. Вот и всё.

Вот пример как запускать сторонний скрипт, так же можно и `git fetch --all` / `git reset --hard origin/master` запускать
require('child_process').spawn('cmd', ['/C', 'node', 'tools/fetch.js']);


А так можно делать файл `touch`, и так как `iisnode` по-дефолту слушает `index.js` - сервер перезапустится.
require('fs').utimesSync('index.js', new Date(), new Date());
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@portfelio
Упорство и труд всё перетрут, ага ;) Почитайте тут developer.github.com/webhooks
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Так как винда то хуки наверно сложно прикрутить и самое простое в планировщик добавить git pull раз в минуту.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы