如何为不同分支配置带不同环境变量的Bitbucket Pipeline
Bitbucket Pipelines 多环境monorepo部署配置解答
问题1:手动触发时的环境选择弹窗配置
完全可以实现,这是Bitbucket Deployments自带的标准能力,不是实验性功能,你之前在教程里看到的选择弹窗就是该功能的交互,不需要安装额外插件,仓库开启Pipelines和Deployments功能即可使用,配置逻辑如下:
- 首先在仓库设置的Deployments菜单中,提前配置好testing、staging、production三个环境的专属环境变量、目标主机地址等差异化配置,通用部署命令不需要做任何修改。
- 针对
next分支的自动部署需求,直接在分支管道的步骤中声明deployment: test,默认提交即自动触发,同时保留管道的手动运行权限即可满足自动+手动双触发要求。 - 针对
master分支的手动部署需求,配置自定义管道(custom pipeline),在部署步骤中分别关联staging、production两个部署环境,手动触发该管道时,Bitbucket会自动弹出环境选择下拉框,选中对应环境后,系统会自动把对应环境的配置注入到后续所有关联步骤中,全程复用同一套部署脚本。
问题2:并行执行部署步骤的支持
Bitbucket Pipelines原生支持独立步骤并行执行,不需要也不能把两类操作合并到同一个步骤的多脚本配置里实现并行——同一个step下的多条script命令是严格串行执行的,不存在并行效果。
- 正确的并行配置方式是用
parallel关键字包裹需要同时运行的多个独立step块,块内的客户端推送、服务端推送步骤会被调度到独立的运行容器中同时启动,日志独立存储、运行资源隔离,排查问题比单步骤堆脚本的方式清晰很多,单类操作失败也不会干扰另一类操作的执行记录。 - 你提到的按文件变更范围选择部署操作的需求,可以把变更检测逻辑放在
parallel块之前的前置步骤实现,配合每个step支持的changesets条件规则,还能实现自动跳过无文件变更的部署步骤,不浪费运行资源。
最小配置示例
pipelines: branches: # next分支自动部署testing环境 next: - step: name: 变更范围检测 script: - # 编写monorepo文件变更检测逻辑,可生成标记供后续步骤判断 - parallel: - step: name: 客户端部署 deployment: test # 可新增changeset条件,仅客户端目录变更时执行 script: - # 通用客户端部署命令,自动注入testing环境变量 - step: name: 服务端部署 deployment: test # 可新增changeset条件,仅服务端目录变更时执行 script: - # 通用服务端部署命令,自动注入testing环境变量 custom: # master分支手动触发部署 deploy-staging-prod: - step: name: 变更范围检测 script: - # 复用testing环境的变更检测逻辑 - parallel: - step: name: 客户端部署(staging) deployment: staging trigger: manual script: - # 通用客户端部署命令 - step: name: 服务端部署(staging) deployment: staging trigger: manual script: - # 通用服务端部署命令 - step: name: 客户端部署(production) deployment: production trigger: manual script: - # 通用客户端部署命令 - step: name: 服务端部署(production) deployment: production trigger: manual script: - # 通用服务端部署命令
手动触发自定义管道时选择对应环境,绑定了该环境的两个并行步骤就会同时启动,未选中环境的步骤不会执行。
内容的提问来源于stack exchange,提问作者JaffParker
相关产品推荐
相关产品推荐

