java - 持续集成 - 仅部署更改的组件

标签 java maven jenkins docker continuous-integration

我在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/

相关文章:

java - 在 spring-boot 应用程序中使用 map 与 DTO

用于代码格式化的java程序|技术专家实验室

java - 如何验证 CronSequenceGenerator cron 表达式?

java - 如何在 Java 中比较字符串?

java - 使用本地库覆盖 Maven 依赖项

android - 设置环境变量 `ANDROID_NDK_HOME`

java - Jenkins 中的 PermGen 错误

maven - 找不到父 : net. java :jvnet-parent for project: com. sun.jersey :jersey-project:pom:1. 9

Jenkins 文件 : illegal string body character after dollar sign; solution: either escape a literal dollar sign "\$5" or bracket the value expression

maven - groovy.lang.MissingPropertyException : No such property: manager for class: Script1