我在一台服务器上使用Gitlab,并希望将主分支提交到另一个Web服务器上的git存储库。 所以当我推送网站的新版本时,生产服务器得到更新。 我知道这应该是可能的与gitlab内的钩子,但我无法find如何。 试过以下指南http://danielmiessler.com/study/git/#website,但它不是用于与gitlab使用,所以我缺less的部分。
我需要做什么生产的networking服务器,然后我该怎么设置挂钩url?
gitlab已经在内部使用post-receive hook。 你可以调用这个脚本,并调用你的钩子,但从文档看起来像“官方”的方式是使用“web-hooks”,即让gitlab在post-receive和你的web服务器上调用你的web服务器,然后拉库。 我自己也没有尝试过,但由于目前还没有人回答,我想我会指出你的方向:
使Web钩子进入你的项目的主页面,并从主菜单下方的右上angularselect钩子。 ( http://yourgitlab.example.net/yourproject/hooks )。 有一个从该页面链接的示例和文档( http://yourgitlab.example.net/help/web_hooks )。
编辑://
我今天早上试了一下。 这是一个php脚本示例。 它假设你已经克隆了repo,并且web服务器具有所有必要的权限/ ssh密钥设置。
<?php $mirrordir='/srv/http/gitlabhooktest/gitmirror'; $gitdir=$mirrordir."/.git"; $json= file_get_contents('php://input'); #error_log($json); $jsarr=json_decode($json,true); #error_log(print_r($jsarr,true)); $branch=$jsarr["ref"]; if($branch=='refs/heads/master'){ $cmd="git --work-tree=$mirrordir --git-dir=$gitdir pull"; #error_log($cmd); exec($cmd); }
由于开发人员用gitlab-shell取代了gitolite,Gitlab没有post-receive hook。
因此您可以:
sudo -u git bash touch /home/git/repositories/<repository name>.git/hooks/post-receive vim /home/git/repositories/<repository name>.git/hooks/post-receive
确保git用户具有运行这个文件中的命令所需的所有权限
自定义钩子最近被添加(因为Gryphius说,常规钩子内部使用): https : //github.com/gitlabhq/gitlabhq/blob/667c0a909bde1cf71f21d8ec9768e98b1c489030/doc/hooks/custom_hooks.md
你只custom_hooks
在你的Git custom_hooks
中创build一个custom_hooks
目录,然后在其中放入钩子,然后GitLab确保它们能够运行。