我在一台服务器上使用 Gitlab,并希望在主分支提交时将我的 git 存储库推送到另一台网络服务器。因此,当我推送网站的新版本时,生产服务器会更新。我知道这应该可以通过 gitlab 中的钩子来实现,但我无法找到确切的方法。尝试了以下指南http://danielmiessler.com/study/git/#website但它不是为与 gitlab 一起使用而编写的,所以我缺少部分。
我需要在生产网络服务器上做什么,然后我将钩子 URL 设置为什么?
gitlab 已经在内部使用了 post-receive 钩子。你可以摆弄那个脚本并调用你的钩子,但从文档看来,“官方”方式是使用“网络钩子”,即让gitlab在接收后调用你的网络服务器,然后你的网络服务器拉取存储库。我自己还没有尝试过,但由于到目前为止没有人回答,我想我会指出你的方向:
要启用网络钩子,请进入您项目的主页并从主菜单下方的右上角选择钩子。(http://yourgitlab.example.net/yourproject/hooks)。有一个从该页面链接的示例和文档(http://yourgitlab.example.net/help/web_hooks)。
编辑://
我今天早上试过了。这是一个 php 脚本示例。它假设您已经克隆了 repo,并且网络服务器已经设置了所有必要的权限/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);
}
Run Code Online (Sandbox Code Playgroud)
最近添加了自定义钩子(因为 Gryphius 说内部使用常规钩子):https : //github.com/gitlabhq/gitlabhq/blob/667c0a909bde1cf71f21d8ec9768e98b1c489030/doc/hooks/custom_hooks.md
您只需custom_hooks在裸 Git 存储库中创建一个目录,并将钩子放入其中,然后 GitLab 确保它们运行。
| 归档时间: |
|
| 查看次数: |
41363 次 |
| 最近记录: |