2012-01-30 3 views
4

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

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

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

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

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

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

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

ответ

1

Обратите внимание, что this article (in French, translated through 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

Ах, ха! Ограниченное судо, это ключ. Благодаря! – Will

0

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

https://github.com/JamesBrooks/git-runner (с ГИТ-бегуном развернуть драгоценный камень).