【问题标题】:Auto Deploying with Git使用 Git 自动部署
【发布时间】:2012-01-30 08:18:07
【问题描述】:

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

我目前将我自己的远程 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 的主目录,而不是通过 ssh 来存储它。

所以我的问题是:由于 git 不拥有网络文件,它不能使用 git 挂钩移动网站。我会假设我不希望 git 有 sudo,也不会通过 git hook 工作,对吧?有什么东西可以比每分钟更快地部署站点吗?我不希望手术非常昂贵。

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

【问题讨论】:

    标签: linux apache git deployment


    【解决方案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

    【讨论】:

    • 啊哈!限制sudo,这是关键。谢谢!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-02
      • 2023-03-13
      • 1970-01-01
      • 2022-06-28
      • 2021-02-06
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      相关资源
      最近更新 更多