如何在Bitbucket Webhook触发的Jenkins自由风格任务中获取Payload及PR URL
在Jenkins自由风格任务中获取Bitbucket PR Webhook的Payload及PR URL
1. 先确认必备插件已安装
确保Jenkins已安装以下两个核心插件:
- Bitbucket Integration Plugin:负责解析Bitbucket的PR Webhook事件,注入相关环境变量
- Generic Webhook Trigger Plugin:用于捕获完整Webhook Payload并提取自定义变量(当Bitbucket插件满足需求时可跳过)
2. 推荐方案:用Bitbucket Integration Plugin直接获取PR信息
如果已安装该插件,按以下步骤配置:
- 进入自由风格任务的配置页面
- 在构建触发器模块,勾选
Build when a change is pushed to Bitbucket - 在构建环境模块,勾选
Inject environment variables from Bitbucket
此时Jenkins会自动注入一系列PR相关环境变量,包括:BITBUCKET_PR_ID:PR的唯一IDBITBUCKET_PR_SOURCE_BRANCH:PR的源分支BITBUCKET_PR_DESTINATION_BRANCH:PR的目标分支- 部分新版本插件会直接注入
BITBUCKET_PR_URL,可直接使用;若没有,可通过ID拼接PR URL:# Linux/macOS构建步骤中使用 PR_URL="https://bitbucket.org/你的工作区名/你的仓库名/pull-requests/${BITBUCKET_PR_ID}" echo "PR地址:${PR_URL}"
3. 备选方案:用Generic Webhook Trigger捕获完整Payload并提取PR URL
如果Bitbucket插件无法满足需求(比如需要完整Payload),用该插件:
- 进入任务配置的构建触发器模块,勾选
Generic Webhook Trigger - 配置参数:
- Token:设置一个自定义令牌(如
bitbucket-pr-trigger),需同步填写到Bitbucket Webhook的URL末尾:http://你的Jenkins地址/generic-webhook-trigger/invoke?token=bitbucket-pr-trigger - Post content parameters:添加两个参数:
- 参数名:
PR_PAYLOAD,表达式填$(捕获完整JSON Payload),内容类型选application/json - 参数名:
PR_URL,表达式填$.pullrequest.links.html.href(对应Bitbucket PR Webhook Payload中PR网页地址的JSON路径)
- 参数名:
- Token:设置一个自定义令牌(如
- 保存配置后,构建步骤中可直接使用
${PR_URL}变量
4. 验证变量有效性
在构建步骤中添加执行命令,验证变量是否正确注入:
- Linux/macOS:
echo "PR URL: ${PR_URL}" echo "完整Payload: ${PR_PAYLOAD}" - Windows:
echo PR URL: %PR_URL% echo 完整Payload: %PR_PAYLOAD%
常见问题排查
- 检查Bitbucket Webhook的Content type是否设置为
application/json,不要选form-urlencoded - 确保Jenkins插件为最新版本,避免版本兼容问题
- 查看构建历史的环境变量页面,确认目标变量是否已注入
内容的提问来源于stack exchange,提问作者newbiecoder
相关产品推荐
相关产品推荐

