Gitlab webhook触发Jenkins自由风格项目构建时拉取错误分支求助
问题根因
你使用的Gitlab插件1.5.22版本存在已知的webhook payload解析缺陷:当Gitlab推送的webhook请求携带多分支变更信息时,插件会优先将排序靠前的master分支作为构建参数传入Git插件,覆盖你预先配置的构建分支规则;手动触发构建时不会传入webhook携带的分支参数,因此会正常使用配置的test分支。
可行解决方案
方案1:配置触发分支过滤(首选方案,从触发源限制)
- 进入Jenkins对应项目的配置页面,找到「Build Triggers」下的「Build when a change is pushed to GitLab」配置块
- 找到「Allowed branches」选项,选择「Filter branches by name」
- 在「Include」输入框填写
test,其余留空,保存配置即可
该配置会直接拦截非test分支的变更触发请求,从根源避免错误分支参数传入。
方案2:修正Git插件分支匹配规则
- 进入「源码管理」的Git配置块,「Branches to build」栏不要填写短名
test/origin/test,改为填写完整ref路径:refs/heads/test - 点击「添加」→ 「附加行为」,选择「强制使用配置的refspec进行解析」
- 确认Refspec配置为
+refs/heads/test:refs/remotes/origin/test,删除默认的全分支匹配规则+refs/heads/*:refs/remotes/origin/* - 保存配置后重新测试触发即可
方案3:兜底硬编码分支切换(兼容旧版本插件缺陷)
如果上述配置均未生效,可以在构建步骤的最前位添加如下shell命令,强制切换到目标分支:
git checkout -B test origin/test git reset --hard origin/test
该步骤会在Git插件拉取代码完成后直接覆盖分支版本,完全规避插件的分支解析逻辑错误。
内容的提问来源于stack exchange,提问作者Akshay Chandran
相关产品推荐
相关产品推荐

