如何获取Bamboo 6.8.0中Bitbucket 6.8.0拉取请求的目标分支?
解决Bamboo 6.8.0中获取Bitbucket PR目标分支的问题
我之前在对接Bitbucket 6.8.0和Bamboo 6.8.0的PR构建时,也遇到过找不到目标分支变量的情况,试了几个方法都能解决,分享给你:
方案1:使用Bamboo内置的PR目标分支变量
Bamboo 6.8.0针对Bitbucket Server的PR构建其实提供了特定变量,但要确保你的构建计划是由Bitbucket PR触发的(而非手动/分支触发)。直接使用以下变量即可:
${bamboo.bitbucket.pr.targetBranch}
如果变量未生效,检查集成配置:确认Bitbucket的Webhook勾选了PR相关事件,且Bamboo构建计划已关联对应Bitbucket仓库、启用了PR触发规则。
方案2:通过Bamboo REST API获取PR详情
如果内置变量无法使用,可在构建脚本里调用Bamboo自身的REST API提取目标分支(以Linux构建代理为例):
# 获取当前构建关联的PR ID PR_ID=${bamboo.bitbucket.pr.id} # 调用API并解析目标分支名 TARGET_BRANCH=$(curl -u ${bamboo.admin.username}:${bamboo.admin.password} \ "${bamboo.server.url}/rest/api/latest/plan/${bamboo.plan.key}/pull-requests/${PR_ID}" \ | jq -r '.targetBranch.name') # 将变量传递给SonarQube sonar-scanner -Dsonar.branch.target=${TARGET_BRANCH}
注意:需确保构建代理安装了jq用于解析JSON,同时配置好Bamboo的访问权限(可用个人访问令牌替代账号密码),并替换${bamboo.server.url}为你的Bamboo实例地址。
方案3:通过Bitbucket Webhook自定义传参
如果前两种方法都不适用,可修改Bitbucket Webhook的payload,手动传递目标分支:
- 打开Bitbucket仓库的Webhook配置,找到触发Bamboo的Webhook
- 在"自定义数据"或"额外参数"中添加
target_branch=${pullRequest.toRef.displayId} - 在Bamboo构建计划中添加自定义变量
targetBranch,值设为${bamboo.webhook.target_branch} - 构建脚本里直接用
${bamboo.targetBranch}传递给SonarQube即可
额外调试提示
可以在构建脚本里加入打印语句(比如echo "Target Branch: ${bamboo.bitbucket.pr.targetBranch}"),方便确认变量是否正常获取;另外如果SonarQube是旧版本,可能需要先启用分支分析插件才能使用sonar.branch.target参数。
内容的提问来源于stack exchange,提问作者John Barnes
相关产品推荐
相关产品推荐

