【发布时间】:2022-02-02 19:22:33
【问题描述】:
问题
就我而言,我想构建一个具有以下要求的 CI/CD 管道(使用 github 操作):
- 每个 git push 都会触发一个工作流(= 管道)
- 每个工作流都会为当前分支创建/更新多个堆栈(因此每个分支都有自己的部署和自己的独立堆栈)
- 如果分支的堆栈已部署,堆栈将得到更新
-
cdk deploy命令用于创建/更新堆栈
只要您不在较短的时间内多次推送新更改,这一切都可以正常工作。如果您第一次推送,它将按预期触发cdk deploy。
但是,如果您在不久之后再次推送,它将触发 cdk deploy 失败,因为之前的 cdk deploy 已经将堆栈置于 CREATE_IN_PROGRESS 或 UPDATE_IN_PROGRESS 状态。这是不幸的,因为只有最新的推送和最新的cdk deploy 是相关的。
问题
如何优雅地取消cdk deploy,使其开始回滚部署并且后续cdk deploy 能够成功?
我试过了
对我来说理想的解决方案是用Ctrl+C 中断cdk deploy 命令会取消部署。但这种情况并非如此。它将继续部署。还有其他不太复杂的解决方案吗?
【问题讨论】:
-
CDK 最终是后端的 AWS cloudformation。所以,如果你能在随后的部署中以某种方式挂钩它,它就可以工作。 docs.aws.amazon.com/cli/latest/reference/cloudformation/…
-
我看到这是一个尚未实现的功能:github.com/aws/aws-cdk/issues/3781
-
@DevangSanghani 我实际上找到了该命令,但它说:
You can cancel only stacks that are in the UPDATE_IN_PROGRESS state.据我了解,这意味着您在第一次创建堆栈时无法使用此命令..跨度> -
@DevangSanghani 关于 github 问题:我已经看到并给了它一个凹凸:D 我可能会再添加一条评论
标签: amazon-web-services amazon-cloudformation github-actions aws-cdk