我正在尝试使用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 ......)或者像上面那样,似乎没有用。或者至少我似乎无法让它们发挥作用。
当然这是一项直截了当的任务......
答案 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)
请按照以下步骤进行操作
要求' net / http' 要求' uri' uri = URI.parse(" YOUR_URL") response = Net :: HTTP.get_response(uri)
希望,这会对你有所帮助