Обновите репо на сервере Ubuntu, когда обновите главную ветку на GitHub.Как я могу это сделать? - PullRequest
1 голос
/ 05 июня 2019

Итак, я запускаю контейнер Docker на сервере Ubuntu. У меня включено связывание, поэтому при изменении файлов на сервере они также изменяются в работающем контейнере, это круто!

Я клонировал репозиторий из GitHub на свой сервер Ubuntu.

Но теперь я хочу еще лучший рабочий процесс разработки.

Каждый раз, когда я объединяю другую ветку со своей мастер-веткой или редактирую мастер-файл напрямую, я отправляю свой код в GitHub.

Затем я подключаюсь к своему серверу Ubuntu через SSH и захожу в репозиторий, затем с помощью простого «git pull» я собираю обновленную версию своей основной ветки на GitHub. И все обновляется на сервере.

Но я хочу, чтобы репо на сервере прослушивало изменения вкл. репо (мастер) на GitHub. Когда основная ветка на GitHub меняется, Я хочу, чтобы сервер обновил (или лучше сказать, потяните ветку master от GitHub).

Как мне добиться такой структуры? Если прослушивание невозможно, нужно ли мне использовать два git-репозитория (GitHub и сервер)? Возможно ли это, поскольку репо на сервере является клоном? Если да, то как мне это сделать.

Я ценю всю помощь.

Ответы [ 2 ]

1 голос
/ 06 июня 2019

GitHub предоставляет веб-хуки, которые можно использовать для получения HTTP-запроса POST к заданной конечной точке при возникновении определенных событий, таких как push.Вы можете прочитать больше об этом в документации GitHub на сайте .Затем вы можете создать задание, которое при получении уведомления выполняет что-то вроде этого:

git fetch origin
git reset --hard origin/master # works better than pull if you force-push
git submodule update --init    # only if you have submodules

Однако для этого требуется, чтобы у вас была служба, которая прослушивает запросы веб-крючка и проверяет все.Если вы не хотите этого делать, вы можете просто нажать на удаленный сервер.Вам нужно установить receive.denyCurrentBranch на updateInstead на стороне сервера, что обеспечит получение извлечения, даже если ветвь уже извлечена.

0 голосов
/ 07 июня 2019

Для этого я использовал Дженкинс. Jenkins - это большой инструмент с множеством функций, одна из которых позволяет Jenkins прослушивать Webhooks, отправляемые GitHub при смене мастера (или любой другой ветви). Тогда он будет автоматически тянуть.

Этот рабочий процесс потрясающий!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...