如何在Jenkins中触发自定义(非master)分支的任务自动启动?
在GitLab中配置Jenkins触发自定义分支构建的解决方法
嘿,这个问题我之前踩过坑!GitLab那个默认的Jenkins CI集成页面确实有点误导人,它默认只展示master分支的配置,但其实咱们有两种靠谱的方式来触发自定义分支(比如dev)的Jenkins构建:
方法一:使用GitLab通用Webhook(推荐,灵活度更高)
这是目前最通用的方案,不用依赖GitLab那个专门的Jenkins CI集成入口:
- 先搞定Jenkins端的配置
- 如果你的Jenkins项目还没支持多分支,先把项目改成「多分支流水线」或者在普通项目里配置好可以拉取
dev分支的代码。 - 安装并启用
Generic Webhook Trigger插件(Jenkins插件市场直接搜就行),然后在项目的「构建触发器」里勾选这个插件,设置好触发规则——比如可以提取GitLab推送请求里的分支参数,确保只触发对应分支的构建。
- 如果你的Jenkins项目还没支持多分支,先把项目改成「多分支流水线」或者在普通项目里配置好可以拉取
- 在GitLab里配置通用Webhook
- 进入GitLab项目的「设置」→「Webhooks」(注意不是「Jenkins CI集成」那个页面),点击「添加Webhook」。
- URL:填Jenkins的通用Webhook触发地址,格式是
http://你的Jenkins域名/端口/generic-webhook-trigger/invoke - 触发事件:只勾选「Push events」就行。
- 分支过滤器:输入你要触发的分支名,比如
dev(支持正则,比如要匹配所有feature分支可以写feature/*)。 - 按需勾选「Enable SSL verification」(如果Jenkins用的是HTTPS),然后点击「保存」。
- 测试验证:往dev分支推一次代码,看看Jenkins是不是自动触发了对应的构建。
方法二:手动构造分支触发的URL(适合老版本GitLab/Jenkins)
如果不想装额外插件,也可以手动构造Jenkins的分支触发URL:
- 在Jenkins项目里设置构建令牌
- 进入Jenkins项目的「构建触发器」,勾选「Trigger builds remotely (e.g., from scripts)」,设置一个令牌(比如
DEV_BUILD_TOKEN)。
- 进入Jenkins项目的「构建触发器」,勾选「Trigger builds remotely (e.g., from scripts)」,设置一个令牌(比如
- 构造触发URL
- 格式是
http://你的Jenkins域名/端口/job/你的项目名/buildWithParameters?token=DEV_BUILD_TOKEN&branch=dev
(这里的branch参数要和你Jenkins项目里用来指定分支的参数名一致,有些项目可能用BRANCH_NAME,根据自己的配置调整)
- 格式是
- 在GitLab里添加Webhook
- 同样去「设置」→「Webhooks」,把上面的URL填进去,触发事件选「Push events」,分支过滤器填
dev,保存后测试即可。
- 同样去「设置」→「Webhooks」,把上面的URL填进去,触发事件选「Push events」,分支过滤器填
额外注意事项
- 确保GitLab服务器能访问到Jenkins的地址(防火墙、端口要开放)。
- 如果用Jenkins的多分支流水线项目,Jenkins本身会自动扫描GitLab的分支并创建对应的任务,这时候只要GitLab的Webhook触发所有分支推送,Jenkins会自动构建对应的分支,不用单独配置每个分支。
- 检查Jenkins的项目权限,确保GitLab的Webhook请求有构建该项目的权限。
内容的提问来源于stack exchange,提问作者GTXBxaKgCANmT9D9
相关产品推荐
相关产品推荐

