Подтвердить что ты не робот

Сделайте Github нажатием на удаленный сервер, когда он получает обновления

Что такое настройка для того, чтобы Github автоматически удалял любые обновления на удаленный сервер?

Это полезно для поддержки кодовой базы в Github, и с веб-сайта с этой кодовой базы.

  • У меня есть мое репо на моем собственном компьютере, вот где я работаю.

  • Я совершаю свои изменения в своем локальном репо и подталкиваю их к моему репозиту Github.

  • Я хочу, чтобы моя реплика Github затем переместила эти изменения на мой удаленный сервер.

Я весь день занимаюсь исследованиями, используя разумные звуки "крючки". Возможно, используя "пост-прием" на Github, который затем запускает команду push на мой удаленный сервер.

Любые предложения?

4b9b3361

Ответ 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])