我在java中有以下组件,每个组件都是一个单独的maven模块:
- Eureka 服务器
- Zuul 代理
- 微服务#1
每个组件都是一个单独的 Docker 镜像,并且它们共享同一个 Git 存储库。 Jenkins 也可用。
我的问题是,当对单个组件进行更改时,有可能仅重建该 docker 镜像并部署它,而不是重新部署所有内容。 CI 中的常见做法是什么?
我已经考虑过这个问题,一种可行的方法是将模块分离到不同的 git 存储库中,并在主项目中使用 git 子模块,是否有更好的方法来实现这一点(在 maven/jenkins 中或在 docker 中)?
最佳答案
我认为您没有理由将其配置为单个项目。我只能想象它所造成的痛苦超出了你的问题提出的问题,我敦促你尽快将其分成具有单独构建系统的单独 git 存储库。我也不会打扰 git 子模块。这不是一个项目——这是三个完全独立的组件,应该独立进行版本控制并具有独立的生命周期,因此应该位于具有单独构建系统的单独存储库中。就目前情况而言,您已经做了很多工作,并且当您开始不小心破坏与您所做的更改无关的东西时,您可能会做更多不必要的工作。
我目前在世界上最大的银行之一担任高级职位,我向目前与我合作的开发团队提供同样的建议。微服务尤其需要独立演进和隔离。
关于java - 持续集成 - 仅部署更改的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41250911/