使用Git自动部署

时间:2012-01-30 08:18:07

标签: linux apache git deployment

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

我目前在与网络服务器相同的盒子上托管我自己的远程git repo。

所有git repos都在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目录,而不是通过ssh存储它。

所以我的问题:由于git不拥有Web文件,因此无法使用git hook移动网站。我会假设我不希望git有sudo,也不会通过git钩子工作,对吧?是否有什么能比每分钟更快地部署网站?我不希望操作非常昂贵。

是否有某种守护进程可以运行并监听某种通知?就像让它观看文件的最后修改时间一样?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果您仍在寻找在git推送后执行自动部署的方法,那么您可能会对此感兴趣:

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