使用gitlab定制post-receive hook

时间:2015-06-15 07:36:32

标签: git gitlab webhooks

我正在尝试使用gitlab设置自定义的post-receive挂钩

我正在关注他们的文件 here

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

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

如果我使用以下命令运行此文件:

 ./post-receive

工作正常。当对gitlab repo进行推送时,它似乎根本不会触发。

这是我第一次尝试任何类型的网络连接,所以我有点迷失。

a)我的远程网络服务器上有上面的脚本,在.git / custom_hooks文件夹中,这是正确的吗?

b)我是否需要在回购中做任何事情?

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

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

当然这是一项直截了当的任务......

2 个答案:

答案 0 :(得分:3)

  

在文件上,因此它由' git'所有。用户。我在网络服务器上没有git用户......所有其他git相关文件都归我的用户或root所有。

这是因为oyur webserver是GitLab服务器的客户端 documentation you reference用于配置GitLab服务器(将后接收挂钩添加到GitLab存储库)。 Hence the 'git' user, which is the default one on a GitLab server

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

您需要声明一个 web hook ,然后发送回can listen to in order to trigger another action的JSON消息。

如果你是唯一一个推,you could simply push to multiple repos。没有挂钩,客户端或服务器。
但这将是一个仅对您当地的克隆回购有效的本地设置。

答案 1 :(得分:1)

请按照以下步骤进行操作

  1. 转到您的git服务器
  2. 使用以下命令查找挂钩 find / -xdev 2> / dev / null -name" hooks"
  3. 选择并转到相应的项目挂钩文件夹。
  4. 以编辑模式(http://www.wikihow.com/Create-and-Edit-Text-File-in-Linux-by-Using-Terminal
  5. 打开接收后文件
  6. 把你的逻辑放在这里。如果想要执行url你可以按照以下方式执行
  7. 要求' net / http' 要求' uri' uri = URI.parse(" YOUR_URL") response = Net :: HTTP.get_response(uri)

    希望,这会对你有所帮助