使用 POST 请求触发 Jenkins 构建

Trigger Jenkins build with POST request

这似乎是一个非常简单的问题,但我还没有找到有效的解决方案。基本上,我从 Gitlab 创建了一个 web hook 来为每次提交触发 Jenkins 中的构建。然而,Jenkins 想要使用 GET 方法的 web hook 请求,而 Gitlab web hook 使用 POST 方法发出请求。有没有办法解决这个问题?

从我所做的搜索来看,詹金斯似乎曾经想要一个 POST 请求,但现在不再是这样了。我在 Gitlab 7.9.4 中使用 Jenkins 1.610。

你试过吗?

GitLab can be configured to interact with Jenkins

我用 NodeJS 做了一个自己的解决方案。从 Gitlab 捕获 Web 钩子 POST 请求,并将该请求作为 GET 请求转发给 Jenkins 几乎是一种黑客攻击。

代码如下:http://git.myladybug.co/khanetor/githook-jenkins-trigger.git

我制作了两个版本,第一个版本希望您在字符串查询中包含项目名称和令牌。第二个将简单地传递任何 url 给 Jenkins 和 return Jenkins 的响应。

原来是因为我启用了CSRF保护,任何对Jenkins的非GET请求都会被拒绝。禁用 CSRF,我可以用 POST 请求触发 Jenkins。