应该是简单的,但也许我不明白这里的大图。 我已经设置了一个在Ubuntu 16.04 / Apache上运行良好的GitLab(omnibus)。在同一台机器上(同一个Apache),我有一个应该通过GitLab更新的www。
由于我在同一台机器上,使用webhooks或其他复杂的机制是没用的。我只想将“on commit to master”复制到www文件夹,所以我选择custom_hooks,如下所述 http://docs.gitlab.com/ce/administration/custom_hooks.html
我创建了一个post-receive文件,给了git权限(和文件夹),触发器正在工作
pry
目录是在提交时创建的。
可能是一个愚蠢的问题,但要复制的GIT仓库文件在哪里?
我看到很多教程在客户端创建钩子,我应该在www文件夹中创建另一个GIT客户端并使用它的钩子吗?
这不能在gitlab主文件夹的GIT服务器端完成吗?
提前感谢您的指导,
答案 0 :(得分:0)
好的,我弄清楚了自己。如果有人需要,首先我在这里找到了一个很好的教程: https://www.digitalocean.com/community/tutorials/how-to-use-git-hooks-to-automate-development-and-deployment-tasks
我完全错过的是,GitLab的安装不会安装git本身:)只需创建一个用户+组'git'。因此所有GitLab项目文件夹都带有git结构:
/var/opt/gitlab/git-data/repositories/<GROUP>/<PROJECT>
只是(git)文件夹,由客户推送,就像我试过并成功从网络中的另一台机器推出(从Windows)
现在问题恢复到gitLab所在的服务器机器上安装git:
sudo apt-get install git
然后,测试你可以签出一些分支并复制到/ www /文件夹 (文件夹必须具有用户权限,以便将来使用git)
git --work-tree=/var/www/html/<MY_WWW_DEPLOY_FOLDER> --git-dir=/var/opt/gitlab/git-data/repositories/<MY_GITLAB_PROJECT_REPO> checkout -f
成功。所有文件现在都出现在deploy文件夹中。
此外,当有人推送回购时,问题会恢复触发自动部署,为此,您必须在GitLab项目文件夹中创建名为custom_hooks的文件夹
/var/opt/gitlab/git-data/repositories/<MY_GITLAB_PROJECT_REPO>/custom_hooks/
在里面,创建一个名为post-receive的新文件,并为git用户提供+ x权限 我还没有完成这部分,因为我还没有决定使用什么语言进行后期接收。似乎可以是任何类型,甚至是C编译的可执行文件,只要具有+ x权限并且已准备好接受一些(较差的文档)GIT回调参数。
干杯,