无法通过gitlab repo中的post-receive进行curl调用

时间:2016-11-25 15:02:49

标签: ruby bash curl gitlab

我有一个gitlab存储库。我进入hooks文件夹,我看到了文件

post-receive

我打开它,我在文件的顶部看到了这个:

#!/opt/gitlab/embedded/bin/ruby

这意味着这个脚本运行ruby-code对吗?

我需要做的是向服务器发送简单的http-post请求。 我可以从命令行执行请求:

curl -X POST“http://myurl/job/jenkinsjob/build?token=mytoken

但是,如果我将此行放在文件中,则会生成错误:

remote: hooks/post-receive:28: syntax error, unexpected tCONSTANT, expecting keyword_do or '{' or '('

所以我想这是因为我直接从shell运行的行是使用bash,对吧? 所以我试图在所有可能的方式中在post-receive的顶部添加bash。但是当我这样做的时候会发生一些错误。

我需要的是做一个简单的帖子。如果需要的话,我可以在ruby中做到这一点,但我找到的大多数来源都是关于或多或少的ruby程序来发布帖子请求,而且没有任何一个衬里。

那么,我该怎么办?我愿意接受建议。

2 个答案:

答案 0 :(得分:0)

不要覆盖gitlab-omnibus提供的git-hooks!他们在那里是有原因的!

Gitlab provides a separate custom_hooks directory这种工作。您可以将脚本添加到/var/opt/gitlab/git-data/repositories/<project-namespace>/<project>.git/custom_hooks/,您可以使用任何语言,包括bash。只需在那里创建一个收到后的文件,用#!/bin/bash shebang开始,你应该好好去。

答案 1 :(得分:-2)

好的,我使用了反引号,它解决了问题:

`curl -X POST "http://posturl"`