You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 11:43:10