基于Gitflow分支模型的Bitbucket Pipeline定制配置咨询
Bitbucket Pipeline 配置实现Gitflow手动触发后续部署
核心思路
依托Bitbucket Pipeline的手动触发步骤(manual steps)和分支/标签条件匹配,针对Gitflow的三个流转场景分别配置独立流水线,确保每个触发源仅启动对应流程,后续环境部署需人工确认触发。
完整配置示例
image: atlassian/default-image:3 pipelines: # 场景1:Feature合并到Dev后自动部署Dev,手动触发Release/Master部署 branches: dev: - step: name: 自动部署到Dev环境 script: - echo "执行Dev环境部署脚本" # 替换为实际部署命令,如:./deploy-dev.sh - step: name: 手动部署到Release环境 trigger: manual script: - echo "执行Release环境部署脚本" # 替换为实际部署命令,如:./deploy-release.sh - step: name: 手动部署到Master环境 trigger: manual script: - echo "执行Master环境部署脚本" # 替换为实际部署命令,如:./deploy-master.sh # 场景3:直接提交到Release后自动部署Release,手动触发Master/Dev部署 release/*: - step: name: 自动部署到Release环境 script: - echo "执行Release环境部署脚本" # 替换为实际部署命令,如:./deploy-release.sh - step: name: 手动部署到Master环境 trigger: manual script: - echo "执行Master环境部署脚本" # 替换为实际部署命令,如:./deploy-master.sh - step: name: 手动部署到Dev环境 trigger: manual script: - echo "执行Dev环境部署脚本" # 替换为实际部署命令,如:./deploy-dev.sh # 场景2:Hotfix合并到Master后自动部署Master,手动触发Dev部署(标签触发方式) tags: hotfix-*: - step: name: 自动部署到Master环境 script: - echo "执行Master环境部署脚本" # 替换为实际部署命令,如:./deploy-master.sh - step: name: 手动部署到Dev环境 trigger: manual script: - echo "执行Dev环境部署脚本" # 替换为实际部署命令,如:./deploy-dev.sh # 场景2替代方案:通过PR合并事件触发(无需打标签) pull-requests: '**': - step: name: 自动部署Hotfix到Master script: - | if [ "$BITBUCKET_PR_DESTINATION_BRANCH" = "master" ] && [[ "$BITBUCKET_PR_SOURCE_BRANCH" =~ ^hotfix/ ]]; then ./deploy-master.sh fi condition: - $BITBUCKET_PR_DESTINATION_BRANCH = "master" - $BITBUCKET_PR_SOURCE_BRANCH =~ ^hotfix/ - step: name: 手动部署Hotfix到Dev trigger: manual condition: - $BITBUCKET_PR_DESTINATION_BRANCH = "master" - $BITBUCKET_PR_SOURCE_BRANCH =~ ^hotfix/ script: - ./deploy-dev.sh
关键配置说明
场景1(Feature → Dev → Release → Master)
- 代码合并到
dev分支时,自动执行Dev环境部署 - 后续Release、Master部署步骤通过
trigger: manual设置为手动触发,需在Bitbucket流水线页面点击启动
场景2(Hotfix → Master → Dev)
- 推荐用标签触发:Hotfix合并到Master时打
hotfix-*格式的标签,自动触发Master部署,后续手动触发Dev部署 - 替代方案:通过PR事件判断源分支为
hotfix/*且目标分支为master,触发对应流程 - 此流程完全独立,不会触发场景1的Dev分支流水线
场景3(Release → Master → Dev)
- 针对
release/*分支的提交,自动部署Release环境 - 后续Master、Dev部署需手动触发,不会触发场景1、2的流程,因为分支匹配规则互不重叠
注意事项
- 统一分支命名规范:Feature分支用
feature/*、Hotfix用hotfix/*、Release用release/*,确保条件判断精准 - 部署脚本需支持幂等执行,避免重复部署导致异常
- 手动触发步骤会在Bitbucket流水线页面显示为“等待手动触发”,仅有权限用户可操作
内容的提问来源于stack exchange,提问作者Bilal Usean
相关产品推荐
相关产品推荐

