如何配置Bitbucket Pipelines仅在PR创建时运行、PR更新时不触发
Bitbucket Pipelines 仅PR首次创建触发流水线解决方案
Bitbucket Pipelines 原生的pull-requests触发规则没有直接提供「仅首次创建触发、后续源分支推送不触发」的配置项,你可以通过以下两种可落地的方式实现需求:
方案1:流水线内加逻辑判断(最常用,无额外依赖)
你可以在step脚本中调用Bitbucket REST API查询当前PR的构建历史,判断是否已经有过成功构建记录,没有的话才执行后续业务逻辑,有的话直接退出即可。
示例配置参考:
pipelines: pull-requests: "**": - step: script: # 调用API查询当前PR的已完成成功构建记录,需要提前在仓库变量中配置拥有API权限的BITBUCKET_TOKEN - BUILD_COUNT=$(curl -s -u ":$BITBUCKET_TOKEN" "https://api.bitbucket.org/2.0/repositories/$BITBUCKET_REPO_FULL_NAME/pipelines/?pagelen=100&q=target.selector.type=%22pull_request%22+and+target.selector.value=%22$BITBUCKET_PR_ID%22+and+state.result=%22SUCCESSFUL%22" | jq '.size') # 如果已有成功构建,直接跳过执行 - if [ $BUILD_COUNT -gt 0 ]; then echo "PR已存在成功构建记录,跳过执行" && exit 0; fi # 下方编写你原本要执行的业务逻辑 - echo "First step"
注意:你需要提前在仓库的「Repository settings -> Repository variables」中配置拥有仓库读取权限的
BITBUCKET_TOKEN,同时确保step使用的镜像中预装了curl和jq工具。
方案2:改用自定义触发结合Webhook
如果你不想每次PR分支推送都启动空跑的step,可以关闭原生的pull-requests触发规则,自行配置Bitbucket Webhook,仅监听「Pull Request Created」事件,收到事件后调用Bitbucket API手动触发对应分支的流水线即可。
内容的提问来源于stack exchange,提问作者kurtgn
相关产品推荐
相关产品推荐

