我希望Jenkins(1.561)构建由合并请求Web挂钩触发的提交到GitLab(6.7.5)的合并(拉)请求。我有一个参数化的构建,以及Jenkins插件“ GitLab合并请求生成器”(1.2.0)和“ GitLab挂钩”(1.0.0)。不幸的是,迁移到Jenkins CI并不是一个现实的选择。
只要变量,和可用,合并请求构建器插件就可以构建合并请求。当插件轮询存储库本身时,或者当我使用手动有效负载(例如)触发构建时,这种方法效果很好,但是我无法通过钩子来完成。gitlabMergeRequestId
gitlabTargetBranch
gitlabSourceBranch
curl --data "gitlabMergeRequestId=3&so_on http://server_name/job/$JOB_NAME/buildWithParameters
使用GitLab Hook插件,我能够在JSON有效负载中获取必要的数据,但是值具有“错误”键:
gitlabMergeRequestId
是id
gitlabTargetBranch
是target_branch
gitlabSourceBranch
是source_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构建?