我有一个具有如下结构的应用程序 服务 A - 应用程序和环境配置、基础设施依赖项(队列、数据库等)等。 服务B - 应用程序和环境配置
遵循此处回复中的建议,我的申请可以采用以下任一结构(答案 1) Git(SCM).
-Service A
src
config
infra
--Service B
src
config
infra
or
答案2:
--Service A
src
--Service B
src
-Config (here there are configuration common to services/crosscutting + service specific)
common.yml
--service A
application.test.yml
:
--service B
application.dev.yml
-Infra
env
从多个帖子来看,普遍的共识似乎是与主存储库有单独的代码和配置。通过配置,我的意思是现在说 .env 文件,它对于不同的环境是不同的。
如果是这样,那么如何维护 3 的版本控制。即示例
Version 2.0.0
App code - src depends on AWS SQS queue
Config code - .env for App code 2.0.0 that has SQS specific params also
Infra code - Cloud formation (general + SQS)
Version 3.0.0
App code - src depends on Kafka
Config code - .env for App code 3.0.0 that has Kafka specific params
Infra code - cf templates (general + Kafka )
我们如何对其进行版本控制,以便 AppCode 3.0.0 具有相应的配置和 IAC。使用 monorepo 概念,我们的问题是不同的团队进行基础设施并拥有自己的流程。
PS - 我无法评论和询问原来的问题,因为我没有足够的积分,因此有一个单独的问题。
我对这个案例的建议是: 从主分支为每个服务创建一个分支:
git checkout -b 服务-a master
git commit -m“所有更改”
git tag -a v2.0.0 -m "2.0.0 版本描述"
git推送原点v2.0.0
git checkout -b 服务-b master
git commit -m“所有更改”
git tag -a v3.0.0 -m "3.0.0 版本说明"
git推送原点v3.0.0
主要思想是为每个服务创建一个分支。此外,您可以创建一个通用基础设施文件夹,并在版本控制存储库中创建策略来授予特定用户权限,以避免开发团队根据 Terraform 经验进行更改。