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

如何在Bitbucket Pipelines失败时自动拒绝PR?

实现Bitbucket Pipelines失败时自动拒绝PR的方案

可以通过Bitbucket REST API + 流水线内置变量实现这个需求,Bitbucket没有直接的内置开关,需要在流水线中添加失败触发的API调用步骤,具体实现如下:

1. 准备访问凭证

  • 在Bitbucket个人设置中创建个人访问令牌(PAT),需要勾选pullrequest:write权限(用于修改PR状态)。
  • 将该令牌存入仓库的环境变量中,命名为BITBUCKET_PR_TOKEN(确保变量设置为保密状态,避免泄露)。

2. 修改bitbucket-pipelines.yml配置

在PR触发的流水线中添加after-script步骤,通过判断BITBUCKET_EXIT_CODE变量的值,决定是否调用API拒绝PR:

pipelines:
  pull-requests:
    '**':
      - step:
          name: PR检查流水线
          script:
            - # 这里填写你的正常流水线步骤,比如代码构建、单元测试、静态检查等
          after-script:
            - |
              # 检查流水线是否失败
              if [ "$BITBUCKET_EXIT_CODE" -ne 0 ]; then
                # 调用Bitbucket API拒绝PR
                curl -X POST \
                  -H "Authorization: Bearer $BITBUCKET_PR_TOKEN" \
                  -H "Content-Type: application/json" \
                  "https://api.bitbucket.org/2.0/repositories/$BITBUCKET_REPO_OWNER/$BITBUCKET_REPO_SLUG/pullrequests/$BITBUCKET_PR_ID/decline" \
                  -d '{"reason": "流水线执行失败,已自动拒绝该PR"}'
              fi

关键说明

  • BITBUCKET_EXIT_CODE:Bitbucket自动生成的变量,流水线步骤失败时会返回非0值,成功时为0。
  • BITBUCKET_PR_ID:自动获取当前触发流水线的PR编号,无需手动配置。
  • BITBUCKET_REPO_OWNER/BITBUCKET_REPO_SLUG:自动获取仓库的所有者和仓库名,用于拼接API路径。
  • API调用逻辑:当流水线失败时,通过POST请求调用decline接口,自动拒绝PR并添加原因说明。

注意事项

  • 确保流水线运行环境能正常访问Bitbucket官方API(如果使用自托管Runner,需保证网络连通性)。
  • PAT权限必须包含pullrequest:write,否则API会返回权限不足的错误。
  • after-script会在当前步骤结束后执行,无论步骤成功或失败,因此可以可靠捕获流水线的最终状态。

内容的提问来源于stack exchange,提问作者Abhishek Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:52:42