有关堆栈的更多详细信息。
CloudFront,原始设置为S3存储桶,可用于所有前端端SPA(单页应用程序)静态资产。
SPA应用程序与连接AWS Lambda的AWS API Gateway对话。
AWS Lambda负责DynamoDB的db CRUD操作。
前端app和Lambda函数各自具有自己的Git存储库,Git主分支合并操作触发2个Circle CI作业,一个将前端资产复制到S3存储桶,另一个将其与无服务器框架部署Lambda。
-绿色部署,我想拥有2个S3实例,API网关和Lambda函数。要进行蓝绿色切换,我们需要将源从一个S3存储桶更改为另一个存储桶,然后创建无效内容以清除缓存。
要使单个生产git分支蓝绿色部署到工作时,Circle CI需要知道当前活动堆栈是蓝色还是绿色,然后复制并粘贴/部署到其他堆栈,如果Circle CI无法做到这一点,我想到的替代方法就是以某种方式放置checkout_current_active_stack git precommit钩子中的动作?具体而言:
(在git precommit钩中)向当前的活动堆栈API(AWS lambda函数,用于跟踪当前堆栈信息)发送HTTP请求。 />根据返回值(“蓝色”或“绿色”)进行部署
#1 楼
值得将持续集成“内部版本”与持续部署“管道”分开。对于构建部分,CircleCI似乎是您选择的工具,对于后者,我建议使用类似AWS CodeDeploy之类的工具,该工具本机支持Blue-Green部署。为完整起见,您可以使用CircleCI来编排AWS CodeDeploy:分隔管道阶段有几个好处:
您只需从
master
分支编译/测试一次;然后通过Artefact存储库对软件包进行升级。您的软件包将永久存储在Artefact存储库中,例如Sonartype Nexus或JFrog Artifactory,这意味着您可以复制旧版本,因为您具有用于部署的特定软件包。 br /> CodeDeploy将为您处理发行模式,而无需过多考虑如何实现蓝绿色部署。
还值得说明的是,您可以在Application Release Automation中对整个管道进行建模BuildMaster或Nolio等工具。就个人而言,我更喜欢从多个第三方SaaS解决方案构建管道。