如何通过Webhooks让Jenkins的Bitbucket插件获取BRANCH_NAME
嘿,我来帮你一步步搞定这个配置,让Jenkins能精准从Bitbucket的Webhook里拿到更新的分支名,自动拉取对应分支的最新代码:
第一步:配置Bitbucket侧的Webhook
先把Bitbucket这边的通知通道搭好:
- 打开你的Bitbucket仓库,进入设置 > Webhooks菜单
- 点击「创建Webhook」,填写关键信息:
- 名称:随便起个好记的,比如「Jenkins代码推送触发」
- URL:填Jenkins任务的触发地址,格式是
http://<你的Jenkins服务器地址>/job/<你的任务名称>/buildWithParameters?token=<自定义安全令牌>,比如http://jenkins.example.com/job/MyProject/buildWithParameters?token=MY_BUILD_TOKEN(这个令牌后面Jenkins要对应上,别漏了) - 触发事件:只勾选仓库推送就行,这样只有代码推送到分支时才会通知Jenkins
- 确认Webhook处于启用状态,点击保存
第二步:配置Jenkins任务(对应你提供的任务设置界面)
首先确保Jenkins已经安装了Bitbucket Plugin和Generic Webhook Trigger Plugin(前者用来对接Bitbucket,后者用来解析Webhook里的分支参数),然后按以下步骤配置:
- 进入你的Jenkins任务的「配置」页面
- 开启参数化构建过程,添加一个字符串参数:
- 参数名称:设为
BRANCH_NAME(这个名字要和后面的参数解析对应,别乱改) - 默认值:可以填你的主分支名,比如
main,方便手动测试
- 参数名称:设为
- 找到构建触发器区域,勾选「Generic Webhook Trigger」,然后做这些配置:
- 在「Post content parameters」里添加一条参数:
- 变量名:
BRANCH_NAME - 表达式:
$.push.changes[0].new.name(这是Bitbucket推送Webhook时,分支名在JSON payload里的路径,精准对应分支名称)
- 变量名:
- 可选:勾选「Print post content」,方便调试时查看Webhook的完整内容(测试完可以关掉)
- 填写「Token」:和刚才Bitbucket Webhook里的
<自定义安全令牌>完全一致,比如MY_BUILD_TOKEN,用来验证请求合法性
- 在「Post content parameters」里添加一条参数:
- 配置源码管理部分:
- 选择Git,填写你的Bitbucket仓库URL
- 在「分支说明」里填写
*/${BRANCH_NAME},这样Jenkins就会根据参数拉取对应的分支代码 - 按需配置其他Git选项,比如拉取策略、删除旧构建等
- 保存Jenkins任务配置
第三步:测试验证
- 向Bitbucket的
branch-1推送一个新提交 - 回到Jenkins,看任务是否自动触发,然后查看构建日志,确认拉取的是
branch-1的最新代码 - 如果没触发,先检查Bitbucket Webhook的URL是否正确、令牌是否匹配,也可以用Bitbucket的Webhook测试功能发送测试请求,看Jenkins日志里是否成功解析到
BRANCH_NAME参数
内容的提问来源于stack exchange,提问作者Andrew




