本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
IaC 的分支策略
典型的 Git 方法使用主干基础(例如main
)用于生产的分支、开发分支和功能分支。许多组织会立即采用同样的基础设施即代码 (IaC) 设计。但是,Git 方法与常见的基础架构设计模式并不直接兼容。请考虑以下几点:
-
应用程序有多个环境。
-
环境示例包括沙盒、开发、暂存和生产。
-
-
环境不是紧密耦合的。
-
生产通常与成功的分阶段部署紧密结合。
-
生产和暂存通常与开发环境完全脱钩。
-
开发通常与沙盒环境完全脱钩。
-
-
每个应用程序都有自己的一套环境标准。
-
许多应用程序不使用沙盒环境。
-
有些应用程序不需要暂存环境,而是使用蓝/绿部署策略。
-
想象一下这样一个场景:应用程序存储库提供三个使用基于主干的方法的环境。开发环境与分支相关联,暂存与develop
分支相关联,生产环境与staging
分main
支相关联。对于此应用程序,需要一项新功能来连接解决方案中的公交网关,该网关由另一个团队和存储库管理。开发人员在功能分支中编写基础架构代码,准备就绪后将其合并到该develop
分支。一切看起来都很好。
但是,挑战出现了。另一位开发者为单独的功能创建了单独的用户故事,将其写在功能分支中,然后将其合并到该develop
分支。第二部功能现已准备就绪,可以合并到舞台和制作中。但是,由于组织中的风险标准,最初的公交网关功能尚未准备就绪。现在,所有功能都无法升级到生产,并且应用程序代码实际上已被冻结或损坏。
在这种情况下,请考虑以下可能的解决方案:
-
最常见的解决方案:通过在存储库中设置单独
./environments
的文件夹,增加目标代码结构位置的代码重复(减少 DR Y)。这允许环境的代码位于同一个存储库中,但可以分离。 -
设置具有复杂变量管理功能的 CI/CD 流程。
-
将环境分成不同的存储库。
-
最不常见的解决方案:使用多个主干分支。