使用无服务器框架实现 CI/CD 及数据处理
1. 自部署的 CI/CD 管道
以往,我们能够使用 AWS 服务构建完整的 CI/CD 管道,并且使其具有灵活性,适用于多个环境,还能以最小的更改支持多种运行时。现在,我们将探索一种更高级的自部署管道。
想象一下,如果管道仅在我们需要时存在,那将节省成本并简化环境。在遵循 GitFlow 版本控制和发布策略时,我们通常会为特定的构建或候选版本创建分支,在将其合并到主干分支之前进行测试。候选版本分支的生命周期有限,在标记版本并合并分支后即可删除。要是能在需要时自动完成这个过程就好了。
我们可以利用 CodeCommit 的强大触发功能创建动态分支管道。这个功能允许我们为存储库中的特定操作添加 SNS 主题或 Lambda 函数,从而使存储库能够通知订阅者事件,或者运行一些代码来为流程增值。具体来说,当创建新的候选版本分支时,我们希望调用一个 Lambda 函数来部署描述管道的 CloudFormation;当删除分支时,也触发该函数以清理资源。
下面是具体的操作流程:
- 创建新分支触发部署 :开发者将新的候选版本分支推送到 CodeCommit,触发 Lambda 函数。该函数接收一些输入(如存储库的详细信息),并部署一个代表我们管道的 CloudFormation 堆栈。
- 管道执行流程 :新管道会拉取代码,必要时进行构建、打包,将其部署到新的阶段或环境,进行测试,将测试报告推送到存储,最后完全移除该环境。
- 删除分支清理资源 :当开发者将候选版本分支合并回主分支并