CDK Pipelines默认仅支持单分支部署,如何配置多分支对应多环境?
CDK Pipelines 多分支环境部署推荐实现模式
业内通用的最优方案是单流水线多分支动态匹配模式,基于CDK Pipelines原生的条件执行、动态阶段生成能力实现,完全不需要搭建多套独立流水线,核心实现逻辑如下:
核心实现步骤
- 第一步:预先定义分支与环境的映射配置
不用硬编码分支逻辑,把分支和目标账号/区域的对应关系维护为可配置的字典,示例如下:// 分支-环境映射配置,新增分支仅需要添加对应配置即可 const branchEnvMapping: Record<string, { account: string, region: string }> = { "dev": { account: "Dev账号ID", region: "目标区域" }, "test": { account: "Test账号ID", region: "目标区域" }, "jons-cool-feature-branch": { account: "指定沙箱账号ID", region: "目标区域" } } - 第二步:配置流水线源的多分支触发规则
绑定代码源时,配置触发规则覆盖所有需要部署的分支:包含固定的dev、test分支,以及符合feature/*命名规则的功能分支,不需要为每个分支单独创建流水线入口。 - 第三步:动态生成对应部署阶段
流水线运行时先获取当前触发的分支名称,匹配到对应的目标环境配置,仅生成并执行对应环境的部署步骤,其他环境的步骤默认跳过:- 触发分支为dev时,仅执行Dev环境的代码检查、单元测试、部署、集成测试步骤
- 触发分支为test时,仅执行Test环境的全量验证部署步骤
- 触发分支为功能分支时,可增加手动审批节点,确认后再部署到指定沙箱账号,避免误操作
- 第四步:可选的功能分支自动化适配
如果不想每次新增功能分支都修改映射配置,可以约定功能分支命名规则,所有feature/*开头的分支默认部署到共享沙箱账号,也可以通过PR标签、提交信息参数指定目标部署账号,不需要修改流水线代码。
方案优势
对比多套独立流水线的方案,该模式有以下明显优势:
- 所有流水线逻辑都在同一套CDK代码中维护,不会出现不同分支的流水线规则不一致的问题,维护成本极低
- 新增分支、新增环境仅需要修改映射配置,不需要重新搭建流水线
- 天然隔离不同分支的部署逻辑,master分支可以单独配置为仅做生产环境部署,完全不会被dev、test分支的代码污染,符合保持主分支稳定的需求
注意:你只需要提前为CDK Pipelines的执行角色配置好所有目标账号的跨账号部署权限即可,权限配置逻辑和单分支多环境部署完全一致,不需要额外调整架构。
内容的提问来源于stack exchange,提问作者Jon Duffy
相关产品推荐
相关产品推荐

