自定义 post-receive hook with gitlab

Custom post-receive hook with gitlab

我正在尝试使用 gitlab

设置自定义 post-接收挂钩

我正在关注他们的文档 here

我在 custom_hooks 文件夹中有一个可执行 post-receive 文件,其中包含以下代码:

 !/bin/bash
 echo "post-receive firing | wall
 git pull

如果我 运行 这个文件有:

 ./post-receive

它工作正常。当推送到 gitlab 仓库时,它似乎根本没有触发。

这是我第一次尝试任何类型的网络挂钩,所以我有点迷茫。

a) 我的远程网络服务器上有上述脚本,位于 .git/custom_hooks 文件夹内,是否正确?

b) 我需要在 repo 中做任何事情吗?

c) 在文档中,它指定我应该设置文件的权限,以便它归 'git' 用户所有。我在网络服务器上没有 git 用户...所有其他 git 相关文件都归我的用户或 root 所有。

所以假设我在这里做错了一些事情,有人可以让我摆脱痛苦并建议一种理智的方法来在我从本地机器推送到 gitlab 时自动推送到网络服务器.我觉得我已经花了一些时间寻找一种方法来做到这一点,而解决方案似乎完全矫枉过正(cronjob 运行ning 每隔几秒......)或者像上面那样,似乎不起作用。或者至少我似乎无法让它们发挥作用。

当然这是一项简单的任务...

on the file so it is owned by the 'git' user. I have no git user on the webserver... all other git related files are owned by my user or root.

那是因为你的网络服务器是 GitLab 服务器的客户端。
documentation you reference is for configuring a GitLab server (adding a post-receive hook to a GitLab repo). Hence the 'git' user, which is the default one on a GitLab server.

但是如果你要推送到gitlab.com,你不会直接添加一个钩子。

您需要声明一个 web hook, which would then send back a JSON message that you can listen to in order to trigger another action

如果只有你一个人要推送,you could simply push to multiple repos。那里没有钩子,客户端或服务器。
但那将是一个本地设置,仅对您的本地克隆存储库有效。

请按照以下步骤操作

  1. 转到您的 git 服务器
  2. 使用以下命令查找钩子 find / -xdev 2>/dev/null -name "hooks"
  3. Select 并转到您各自的项目挂钩文件夹。
  4. 打开post-在编辑模式下接收文件(http://www.wikihow.com/Create-and-Edit-Text-File-in-Linux-by-Using-Terminal)
  5. 把你的逻辑放在这里。如果要执行 url 你可以按照以下方式执行

需要'net/http' 需要 'uri' uri = URI.parse("YOUR_URL") 响应 = Net::HTTP.get_response(uri)

希望这对您有所帮助