从GitLab Web钩子触发Jenkins构建以进行合并请求


10

我希望Jenkins(1.561)构建由合并请求Web挂钩触发的提交到GitLab(6.7.5)的合并(拉)请求。我有一个参数化的构建,以及Jenkins插件“ GitLab合并请求生成器”(1.2.0)和“ GitLab挂钩”(1.0.0)。不幸的是,迁移到Jenkins CI并不是一个现实的选择。

只要变量,和可用,合并请求构建器插件可以构建合并请求。当插件轮询存储库本身时,或者当我使用手动有效负载(例如)触发构建时,这种方法效果很好,但是我无法通过钩子来完成。gitlabMergeRequestIdgitlabTargetBranchgitlabSourceBranchcurl --data "gitlabMergeRequestId=3&so_on http://server_name/job/$JOB_NAME/buildWithParameters

使用GitLab Hook插件,我能够在JSON有效负载中获取必要的数据,但是值具有“错误”键:

  • gitlabMergeRequestIdid
  • gitlabTargetBranchtarget_branch
  • gitlabSourceBranchsource_branch

我尝试使用GitLab合并请求生成器插件的要求配置构建参数,将Name变量值配置为Default Value。不幸的是(可能是有意的),Default Value字段中的变量没有被替换,因此Jenkins正在寻找具有id ${id}和类似分支值的合并请求。

我没有找到配置从GitLab发送的有效负载的方法,并且既没有GitLab Hook插件的配置选项,也没有GitLab Merge Request Builder插件使用的参数名称的配置选项。

我正在考虑编写一个小的PHP脚本,以在将其传递给Jenkins之前拦截并更改POST中的有效负载。尽管我确信这将奏效,但它显然似乎不必要地复杂。

我可以看到的唯一其他真正的选择是更改插件的来源,但这使升级它们成为PITA。

我是否忽略了一些显而易见的事情,或者真的没有一种更简单的方法来触发从GitLab到Jenkins的Web挂钩触发Merge Request构建?

Answers:



0

签出这个新插件(gitlab-plugin),也许有帮助。该插件将Jenkins模拟为可与GitlabHQ一起使用的GitlabCI Web服务。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.