如何配置GitLab合并请求到master时触发带分支参数的Jenkins自由风格任务?
实现GitLab合并到Master的MR触发Jenkins自由风格任务并传递源分支参数
方案一:优化GitLab官方Jenkins CI集成配置
1. 过滤仅针对Master分支的MR触发
在GitLab项目的设置 > 集成 > Jenkins CI页面:
- 仅勾选「合并请求事件」,取消其他事件的勾选
- 展开「高级设置」,在「触发条件」中:
- 目标分支:填写
master(若主分支为main则替换) - 事件类型:选择「合并请求创建」(若需要MR更新时也触发,可追加「合并请求更新」)
- 目标分支:填写
2. 传递源分支参数至Jenkins
- 在Jenkins自由风格任务中,添加字符串参数,命名为
SOURCE_BRANCH - 回到GitLab的Jenkins CI集成配置,在「构建触发器」的「自定义构建参数」中输入:
SOURCE_BRANCH=${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}
GitLab会自动将当前MR的源分支名注入该变量,传递给Jenkins任务。
方案二:GitLab Webhook + Jenkins Generic Webhook Trigger插件(更灵活)
如果官方集成无法满足复杂需求,Webhook方案可控性更强:
1. Jenkins端配置
- 安装Generic Webhook Trigger插件
- 在目标自由风格任务中,添加该插件作为构建触发器:
- 设置「Token」为自定义令牌(例如
gitlab-mr-token) - 配置「提取参数」:
- 变量名:
SOURCE_BRANCH - JSON路径:
$.object_attributes.source_branch
- 变量名:
- 添加「触发条件」:
- 变量:
$.object_attributes.target_branch - 表达式:
master - 运算符:
equals
- 变量:
- 设置「Token」为自定义令牌(例如
2. GitLab端配置
- 进入项目设置 > Webhooks,新增Webhook:
- URL:
http://<你的Jenkins地址>/generic-webhook-trigger/invoke?token=gitlab-mr-token(替换为实际Jenkins地址和令牌) - 触发事件:仅勾选「合并请求事件」
- 根据Jenkins的协议,选择是否启用「SSL验证」
- 保存后可点击「测试」验证触发是否正常
- URL:
方案对比
- 官方集成:配置步骤简单,无需额外插件,适合基础场景
- Webhook方案:支持更复杂的过滤逻辑(如按MR标签、作者等触发),灵活性更高,适合个性化需求
内容的提问来源于stack exchange,提问作者jessefournier
相关产品推荐
相关产品推荐

