Назад | Перейти на главную страницу

Git удаленный на удаленный

Я пытаюсь понять, как использовать git для развертывания сайта.

Теоретически есть 3 связи:

  1. [локальный компьютер] Моя локальная машина для кодирования
  2. [гитолитный сервер] Хостинг частного репо на Gitolite
  3. [веб сервер] VPS-хостинг с клоном --bare

я git push мой код от [локальный компьютер] к [гитолитный сервер] но как мне протолкнуть свой код из [гитолит] к моему [веб сервер]

Я хотел бы автоматизировать это, поэтому все, что мне нужно сделать, это завершить git push.

Лучший способ установить крючок на [gitolate server] репо для запуска post-update или post-receive сценарий? Но поскольку это --bare репо означает, что мне нужно запустить git push из [гитолитный сервер] к [веб сервер]клонированного репо, так как я не могу запустить git pull так как --bare у репо нет рабочего дерева?

Извините и заранее спасибо

WD

Одно из решений:

  1. поместите хук post-receive на сервер gitolite для автоматической отправки на веб-сервер
  2. поместите на веб-сервер перехватчик post-receive для развертывания кода (для этого я обычно использую архив git)

Затем вы отправляете gitolite, он отправляется на веб-сервер, который затем развертывает ваш новый код. Готово!

В качестве альтернативы вы можете исключить репозиторий git на веб-сервере из уравнения и заставить обработчик gitolite post-receive делать что-то вроде:

git archive --format=tar master | (ssh -i $KEYFILE user@webserver tar -x -C /dest/dir )

который будет выполнять развертывание прямо с крюка гитолита. Предполагается, что вы можете подключиться по ssh к веб-серверу как «пользователь», у которого есть закрытый ssh-ключ в $ KEYFILE, что может иметь некоторые разветвления безопасности, поскольку любой, кто может прочитать ловушку gitolite, может получить эти значения.