小编Mar*_*ann的帖子

为来自 GitLab 网络钩子的合并请求触发 Jenkins 构建

我希望 Jenkins (1.561) 构建提交到 GitLab (6.7.5) 的合并(拉取)请求,由合并请求 Web 钩子触发。我有一个参数化构建,以及 Jenkins 插件“GitLab Merge Request Builder”(1.2.0)和“GitLab Hook”(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 Merge Request Builder 插件的要求和变量值来配置构建参数。不幸的是(并且可能是故意的),字段中的变量没有被替换,因此 Jenkins 正在寻找具有 id和类似分支值的合并请求。NameDefault ValueDefault Value${id}

我发现无法配置从 GitLab 发送的有效负载,并且 GitLab Hook 插件和 GitLab Merge Request Builder 插件使用的参数名称都没有配置选项。

我正在考虑编写一个小的 PHP 脚本来拦截和更改来自 POST 的有效负载,然后再将其传递给 Jenkins。虽然我确信这会奏效,但它确实看起来不必要地复杂。 …

hook continuous-integration jenkins gitlab

10
推荐指数
1
解决办法
2万
查看次数

标签 统计

continuous-integration ×1

gitlab ×1

hook ×1

jenkins ×1