我在CodeCommit中有一个存储库,在这个存储库中,有3个分支dev、stage和prod,在这个存储库中有多个堆栈版本,例如:
根/
--任务1
----模板.yml
------源代码
--------index.js
--------package.json
--任务2
--任务3
--任务-....
--buildspec.yml
每个文件夹都包含不同的模板 yml 及其用于特定 Lamba 代码的 src 文件夹,buildspec.yml 包含要在每个任务文件夹中输入的命令并执行所需的命令来安装所需的节点包以及 sam 或 cloudformation用于创建或更新堆栈的命令。
当一个新的提交被推送到源时,这会触发管道并执行 buildspec.yml 的所有命令并创建/更新所有堆栈,即使代码中只更改了一个堆栈,这里的问题是是否有更好的方法在一个存储库和一个管道中处理多个堆栈的解决方案。
一种想法是为每个堆栈创建一个存储库和管道,这样每个堆栈都将独立于其他堆栈进行更新,但这样,如果有 20 个堆栈,则需要 20 个存储库和 20 个管道。
我想知道在同一存储库和一个管道中处理多个堆栈的最佳实践是什么,并避免在仅更新一个堆栈时部署所有堆栈,或仅更新在代码提交中更新的堆栈。
最佳答案
创建一个 Amazon EventBridge (Amazon CloudWatch Events) 规则,该规则调用 AWS Lambda 函数来评估对存储库的更改并运行适当的管道。
当提交发生时,可以使用 lambda 和事件桥来修复它,更多详细信息 https://aws.amazon.com/es/blogs/devops/adding-custom-logic-to-aws-codepipeline-with-aws-lambda-and-amazon-cloudwatch-events/
关于aws-cloudformation - 使用 codepipeline 在 cloudFormation 中部署多堆栈的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72357208/