2012-01-30 102 views
4

我想知道是否有人對此方案有更好的策略。使用Git自動部署

我目前在webserver的同一個盒子上託管我自己的遠程git倉庫。

所有的git回購都在git用戶之下。

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

我必須以root身份運行,執行該命令每分鐘cron作業。 web文件夾中的git repo被從同一個盒子克隆到git的home dir,而不是通過ssh存儲。

所以我的問題:由於git不擁有網絡文件,它不能使用git鉤子移動站點。我會假設我不想讓git擁有sudo,也不會通過git hook工作,對吧?是否有東西能夠比每分鐘更快地部署網站?我不希望這項行動非常昂貴。

是否有某種守護進程的根可以運行並偵聽某種通知?就像讓它看着文件的最後修改時間一樣?

回答

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

啊哈!受限制的sudo,這是關鍵。謝謝! – Will 2012-01-31 00:35:18