这似乎是一个非常简单的问题,但我还没有找到可行的解决方案。基本上,我从 Gitlab 创建了一个网络钩子,为每次提交触发 Jenkins 中的构建。然而,Jenkins 想要使用 GET 方法的 web hook 请求,而 Gitlab web hook 使用 POST 方法发出请求。有没有办法解决这个问题?
从我所做的搜索来看,詹金斯似乎曾经想要一个 POST 请求,但现在已经不是这样了。我正在使用 Jenkins 1.610 和 Gitlab 7.9.4。
事实证明,因为我启用了 CSRF 保护,任何对 Jenkins 的非 GET 请求都会被拒绝。禁用 CSRF,我可以通过 POST 请求触发 Jenkins。
你试过这个吗?
我在 NodeJS 中制作了自己的解决方案。从 Gitlab 捕获 web hook POST 请求,并将该请求作为 GET 请求转发给 Jenkins,这几乎是一种 hack。
这是代码: http: //git.myladybug.co/khanetor/githook-jenkins-trigger.git
我制作了 2 个版本,第一个版本希望您在字符串查询中包含项目名称和令牌。第二个将简单地将您拥有的任何 url 传递给 Jenkins 并返回 Jenkins 的响应。