如何在GitLab中添加服务器端的预接收挂钩?

时间:2017-08-29 06:16:47

标签: git gitlab githooks

我试图限制在我们的gitlab中提交的二进制文件(EXE,DLL,PDF)。所以我需要添加钩子来全局限制它。我怎样才能做到这一点? Pre-receive挂钩是否适用于此?

添加钩子这个地方是否正确?

  

的/ opt / gitlab /嵌入/服务/ gitlab - 壳/钩/预接收

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:0)

正如我评论的那样,对于每个项目,请使用custom hooks :( Chained hooks support
查看“How can I add hooks to gitlab?”的确切步骤,并参与创建专用的repo.git/custom_hooks子文件夹。

但这是每个存储库,而不是所有存储库 您需要为组的每个repo添加该脚本。

您在普通pre-receive文件夹中看到的repo.git/hooks脚本实际上是gitlab-shell hook文件夹的符号链接,GitLab会将其用于管理访问权限。

答案 1 :(得分:0)

您可以安装一个侧面钩子,但记录不充分。 Gitlab当前正在集成gitlab-shellgitaly。因此,提供说明是一个移动的目标,但是从12.3.5版本开始有效。

gitlab-shell/hooks/*中的脚本扫描当前存储库和站点范围的目录。但是,不会在全新安装时创建站点范围的目录,您需要自己创建它们。

mkdir -p <XXX>/gitlab-shell/hooks/pre-receive.d       # or update.d or post-receive.d
chown git:git <XXX>/gitlab-shell/hooks/pre-receive.d

# link or copy your script of course it needs to be executable by the Gitlab user
ln -s /usr/bin/my-hook <XXX>/gitlab-shell/hooks/pre-receive.d/my-hook