如何将回滚功能添加到基本的S3 CodeBuild部署中

ant*_*paw 5 deployment continuous-integration amazon-s3 aws-codepipeline aws-codebuild

我已按照此说明在aws中获得了一个非常基本的ci工作流程.它完美无瑕,但我希望有一个额外的功能,回滚.首先,虽然它可以"开箱即用",但不是在我的情况下,如果我选择CodeBuild中的前一个作业,我想要回滚并点击"重试"我收到此错误消息:"错误使用工件类型CodePipelines时必须设置ArtifactsOverride".我还尝试使用管道历史记录页面重新运行整个管道,但它只是一个没有任何功能的构建列表.

我的问题是:如何向我的工作流程添加回滚功能.它不必在同一个管道等.但它不应该触摸git.

Tim*_*imB 5

AWS CloudFormation 现在支持基于CloudWatch警报回滚.

我将一个CloudFront发行版放在S3存储桶前面,并将原始路径设置为该存储桶中的文件夹.每次从CodeBuild部署到S3时,都会部署到随机的新S3文件夹.

然后,将JSON文件中的文件夹名称作为CodeBuild步骤中的输出工件传递.您可以将此工件用作由管道中的CloudFormation操作更新的CloudFormation模板参数.

CloudFormation模板会将CloudFront分配的OriginPath字段更新为包含新部署的文件夹.

如果警报触发,则CloudFormation模板将回滚并翻转回旧文件夹.

这种方法有几个优点:

  • 客户应该只在部署发生时看到新版本或旧版本,而不是在部署运行时看到可能混合的文件.
  • 部署逻辑更简单,因为您每次都要上传一组新文件,而不是确定哪些文件是新文件以及哪些文件需要删除.
  • 回滚非常简单,因为您正在返回仍然存在的文件而不是重新部署旧文件.

您的管道需要包含CodeBuild和顺序CloudFormation操作.