AWS CDK V2(TypeScript):如何在CodePipeline部署阶段中添加Action Group
在AWS CDK V2中为CodePipeline Stage添加顺序执行的Action Group
好问题!你想要的在同一Stage内按顺序执行多组动作的需求,完全可以通过CDK V2的actionGroups属性实现,这正是对应AWS控制台里的“添加动作组”功能——每组动作内部并发执行,组与组之间按顺序依次运行,完美替代拆分多个Stage的方案。
核心实现思路
CDK V2的StageProps提供了actionGroups属性(替代原来的actions),它是一个ActionGroup对象数组:
- 数组中的每个元素对应一个Action Group,组内的
actions会并发执行 - 不同的Action Group会严格按照数组的顺序依次执行,前一组完成后才会启动下一组
- 你可以为每个Group设置
name,在AWS控制台里会显示这个组名,方便识别
修改你的代码示例
下面是针对你现有代码的修改版本,把原来的并发动作拆分为两个顺序执行的Action Group:
let stagesToDeployInOrder = [] // Deploy infrastructure for each stage StageConfigurations.ACTIVE_STAGES.forEach((stage: Stage) => { const stageToDeploy: StageProps = { stageName: `${stage.stageType}`, transitionToEnabled: true, // 使用actionGroups替代actions,实现组间顺序执行 actionGroups: [ { name: "Infrastructure Deployment", // 自定义组名,控制台会显示 actions: codeDeploymentManager.getDeploymentActionsForStage(stage.stageType), }, { name: "Additional Stage Actions", actions: stage.stageDeploymentActions, }, // 如果有更多组,继续在这里添加即可 ], // 注意:不要同时设置actions属性,二选一 } stagesToDeployInOrder.push(stageToDeploy); }); // Define Pipeline itself. Stages are in order of deployment. new Pipeline(this, `Code-pipeline`, { pipelineName: `ProjectNamePipeline`, crossAccountKeys: false, stages: stagesToDeployInOrder });
关键注意事项
actionGroups和actions是互斥的:在同一个Stage中,你只能使用其中一个属性,不能同时设置- 每个Action Group的
name是可选的,但建议设置,方便在控制台中区分不同的组 - 如果需要调整组的执行顺序,只需要修改
actionGroups数组的元素顺序即可
这样配置后,在AWS控制台的管道编辑页面中,你会看到同一个Stage下有两个独立的动作组,它们会按你定义的顺序依次执行,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Oliver Wheatley
相关产品推荐
相关产品推荐

