使用Git自动部署

我想知道是否有人有这种情况下更好的策略。

我目前托pipe我自己的远程git回购与web服务器在同一个框。

所有的git回购都在git用户之下。

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

我有一个cron作业,每分钟执行一次这个命令。 web文件夹中的git repo被从同一个盒子克隆到git的home dir,而不是通过ssh存储。

所以我的问题:因为git不拥有networking文件,它不能使用git钩子移动站点。 我会假设我不想让git拥有sudo,也不会通过git hook工作,对吗? 有什么东西可以比每分钟更快地部署网站吗? 我不希望这个行动非常昂贵。

有什么样的守护进程可以运行并侦听某种通知? 就像看着一个文件的最后修改时间一样?

请注意, 这篇文章(法文,通过谷歌翻译)报告说,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

这可能会让你感兴趣,如果你仍然在寻找一种在git push之后执行自动部署的方法:

https://github.com/JamesBrooks/git-runner (用git-runner-deploy gem)。