Автоматическое развертывание с помощью Git - PullRequest
4 голосов
/ 30 января 2012

Мне интересно, есть ли у кого лучшая стратегия для этого сценария.

В настоящее время я размещаю свое собственное удаленное git-репо на той же коробке, что и веб-сервер.

Все репозитории git находятся подпользователь git.

sudo -uwww-data -gwww-data git --git-dir=/var/www/website/.git --work-tree=/var/www/website pull

У меня есть задание cron, выполняемое от имени root каждую минуту, которое выполняет эту команду.Репозиторий git в веб-папке клонируется из той же самой папки в домашний каталог git, где он хранится, а не через ssh.

Поэтому мой вопрос: поскольку git не владеет веб-файлами, он не может двигатьсясайт с использованием git hook.Я бы предположил, что я не хочу, чтобы у git была sudo, и это не сработало бы через git hook, верно?Есть ли что-то, что будет развертывать сайт быстрее, чем каждую минуту?Я не хочу, чтобы операция была очень дорогой.

Может ли какой-нибудь корень демона запускаться и прослушивать какие-то уведомления?Как, например, просмотр последнего измененного времени файла?

Ответы [ 2 ]

1 голос
/ 30 января 2012

Обратите внимание, что эта статья (на французском языке, переведено через Google) сообщает, что sudo работает с вашим подходом:

изменить sudo, чтобы разрешить пользователю gitosisиспользуйте эту команду как www-data.
. Для этого, запустив «visudo», добавьте строку:

git ALL = (www-data) NOPASSWD: /usr/local/bin/pullhere

Затем, в случае необходимости, в каждом хранилище добавьте следующееперехватывать в post-receive файле:

sudo -u www-data /usr/local/bin/pullhere /html/u/user/here

например в / home/git/repositories/projet1.git/hooks/post-receive

0 голосов
/ 12 октября 2012

Это может вас заинтересовать, если вы все еще ищете способ автоматического развертывания после git push:

https://github.com/JamesBrooks/git-runner (с гемом git-runner-deploy).

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