允许通过提交进行手动部署的AWS CI/CD管道管道、AWS、CI、CD

2023-09-03 10:28:40 作者:徘徊的人生

背景

我希望在AWS和Github中为使用Amplify的Reaction应用程序创建以下CI/CD流:

单个main分支,包含短暂的功能分支和PR进入main。 每个PR在Amplify中触发自己的测试环境,有自己的临时子域,在PR合并时会被拆除,如here所述。 合并到main不会自动触发部署到生产。 相反,有一个单独的机制(网页或Amplify命令,甚至基于Git标签的触发器),用于从main手动选择提交以部署到生产中。

问题

我不清楚是否...

Amplify已经内置了对此流程的支持(根据我读过的文档,我认为答案是&否,但我不确定)。 AWS CodePipeline中已内置对此流的支持,或者是否可以在那里配置它。 有另一个AWS工具可以解决此问题。 美国移动支付巨头Square的无服务器应用实践

我正在寻找这些问题的答案,或者在解决这些问题的文档中寻找具体的参考。

推荐答案

放大的答案是是,部分。

(1)单个主分支,有短命的功能分支和PR进入Main。

是的。Feature branch deploys。可以定义要自动部署的分支模式,如feature*/

(2)每个PR在Amplify中触发自己的测试环境,有自己的临时子域

是的。Web Previews for PRs。Web预览将向GitHub存储库发出的每个请求部署到一个唯一的预览URL,该URL与您的主站点使用的URL完全不同。

(3)合并到Main不会自动触发部署到生产。

是的。Disable automatic builds,在main

(4)相反,有一个单独的机制...用于从Main手动选择提交以部署到生产。

部分(仅HEAD?)。调用StartJobAPI以手动触发构建,比如从Lambda。作业类型RELEASE使用指定分支的最新更改启动新作业。我不确定jobType: MANUALcommitId是否从任意提交哈希启动作业。

3+4的另一种解决方法是skip the build for an arbitrary commit。如果提交消息末尾出现[skip-cd],Amplify将跳过生成。