gpt4 book ai didi

git - 使用 Gitolite 自动部署 PHP 脚本

转载 作者:太空狗 更新时间:2023-10-29 14:48:50 25 4
gpt4 key购买 nike

我想在本地为我的测试服务器设置自动部署脚本。
我在 ubuntu 桌面 11.04 上使用 gitolite。我使用 apt-get install gitolite 安装 gitolite,所以它是创建用户 gitolite 和组 gitolite。
现在我使用具有用户和组 ivan:ivan,
的 apache 设置我的测试网络服务器并在该用户名下执行 git clone。
所以所有文件和文件夹都具有相同的文件所有者 ivan:ivan。

我在/var/lib/gitolite/repository/testrepo/hooks/下设置了接收后 Hook ,并在里面有这个脚本:

#!/bin/bash
#CONFIG
LIVE="/home/ivan/public_html/testrepo"

read oldrev newrev refname
if [ $refname = "refs/heads/master" ]; then
echo "===== DEPLOYING TO TEST SITE ====="
unset GIT_DIR
cd $LIVE
git pull origin master:
echo "===== DONE ====="
fi

由于post-receive hooks是由gitolite用户执行的,所以访问使用用户ivan的测试服务器存在权限问题。

我已经将 gitolite 添加到 ivan 组并使其组访问写入,但它仍然无法运行。
我知道这是一个权限问题,但我不知道解决方案。
如果您有相同的经验或有任何提示,我将不胜感激。

谢谢
伊万

最佳答案

终于自己解决了,感谢VonC的指点。
我的解决方案可能不美观但有效。

下面是我的解决方案中有效的步骤:

  1. 我创建了一个裸存储库,它将具有与 Web 应用程序相同的用户权限。

  2. 在 Gitolite Repositories 文件夹中(在 Ubuntu 中:/var/lib/gitolite/repositories),我创建了一个 post-receive Hook ,它将把我刚刚创建的裸仓库镜像到仓库中。代码是:

    #!/bin/bash<br/>
    echo '==== DO MIRROR ===='<br/>
    git push --mirror user@host:path/to/bare.git<br/>
    echo '==== DONE MIRROR ===='

  3. 在我的 Web 应用程序中,我将创建一个远程连接到那个裸仓库。

  4. 然后我在镜像的裸存储库中创建一个接收后 Hook ,它会要求 Web 应用程序从中提取数据。代码:

    #!/bin/bash<br/>
    WORK_DIR="/home/ivan/public_html/test/testing"<br/>
    read oldrev newrev refname<br/>
    if [ $refname = "refs/heads/master" ]; then<br/>
    echo "===== DEPLOYING TO LIVE SITE ====="<br/>
    unset GIT_DIR<br/>
    cd $WORK_DIR<br/>
    git pull mirror-repo master<br/>
    echo "===== DONE ====="<br/>
    fi

  5. 不要忘记 chmod +x 用于接收后。

正如我之前所说,它可能不漂亮但仍然有效,至少对于我目前的情况而言。我不只是从 gitolite 存储库中提取它的原因是因为用户文件权限。在 Ubuntu(从 apt-get 安装)中,gitolite 拥有用户和组,gitolite:gitolite。我的网络应用程序位于我的主文件夹下(我使用的是 suPHP),其中包含用户和组 ivan:ivan。因此,当我推送到 gitolite 存储库时,它将在 gitolite 用户下运行 bash 脚本,该用户无法访问我的主文件夹下的 .git 文件夹。

是的,对于那些有更好解决方案的人,我很想听听你的意见。
谢谢希望我的解决方案可以帮助其他人。
伊万

关于git - 使用 Gitolite 自动部署 PHP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10009279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com