Сделайте Github нажатием на удаленный сервер, когда он получает обновления
Что такое настройка для того, чтобы Github автоматически удалял любые обновления на удаленный сервер?
Это полезно для поддержки кодовой базы в Github, и с веб-сайта с этой кодовой базы.
-
У меня есть мое репо на моем собственном компьютере, вот где я работаю.
-
Я совершаю свои изменения в своем локальном репо и подталкиваю их к моему репозиту Github.
-
Я хочу, чтобы моя реплика Github затем переместила эти изменения на мой удаленный сервер.
Я весь день занимаюсь исследованиями, используя разумные звуки "крючки". Возможно, используя "пост-прием" на Github, который затем запускает команду push на мой удаленный сервер.
Любые предложения?
Ответы
Ответ 1
Как я понимаю, github не позволяет вам определять "истинные" крючки. Как и пост-прием. Вместо этого они предоставляют разработчикам что-то, называемое webhook. что вы можете сделать с этим, это вопрос веб-запроса на любой URL, указанный вами, всякий раз, когда вы нажимаете на ваш репозиторий.
Итак, что вы можете сделать: установите веб-сервер на удаленном сервере git и настройте github, чтобы сделать http-вызов для него после получения. Всякий раз, когда github уведомляет ваш удаленный сервер, тяните его с github.
См. здесь, как использовать веб-камеры: https://help.github.com/articles/post-receive-hooks
P.S.
Истинный крючковый мехианизм, который мог бы стать уязвимостью безопасности для github, заставляет его выполнять пользовательский код на своих серверах. Таким образом, они сделали что-то, что не позволяет выполнять что-либо, но все же позволяет вам делать что угодно.
Ответ 2
Чтобы проиллюстрировать Yervand answer (upvoted), рассмотрите этот peligangit в качестве примера простого HTTP-сервера (который вы можете установить на свой экземпляр amazon-ec2), который будет:
- запустите простой HTTP-сервер.
- прослушать POST из веб-хост GitHub
- он вытащит новые коммиты
![workflow]()
Эта библиотека будет извлекать, а затем reset основную ветку на начало/мастер.
Это один из способов сделать это. (см. githook.py
)
def hard_reset_repos(self):
self.server.source_repo.fetch([self.server.source_repo.origin])
self.server.source_repo.reset(['--hard', self.server.source_repo.originMaster])