持续集成 - 构建单独的项目还是构建在一个项目中?

continuous integration - build separated projects or build all in one?

我正在开发一个将包含这些应用程序的项目:

- backend api   (nodejs)
- ios app       (objective-c)
- android app   (java)
- web site      (php)
- admin site    (php)
- client site   (php)

我的问题是关于版本控制和管理所有这些项目。

我在考虑两个选项:

1) 分别构建每个应用程序

2) 将所有应用程序放入一个构建中

--

那么,对于这种情况,有哪些好的做法?也许选项 2?

我投票给选项 2。使用 整体式 方法 'carry' 在所有阶段进行开发要容易得多:

  • 更简单的集成——所有部分都已经集成,每个人都在同一页面上处理整个项目的任何部分,而不是在他们自己的沙箱中(true 持续集成,如果你想要的)——如果你还计划使用敏捷方法,这非常重要
  • 集成测试不再需要单独activity,你可以做到 常规 CI 过程的一部分,因为您可以一起测试所有部件(可能使用单个组合测试台而不是每个部件的专用测试台 - 降低成本)
  • 更简单 coherent/consistent 源代码控制(即使这些部分有自己的 回购协议,它们可以像我一样以整体式的方式一起管理 在这个问答中建议:
  • 整体构建速度可能更快(不同的构建可以使用空闲周期 在其他构建中,当它们是 独立 - 他们可能会更好 "packed",导致 减少构建资源的成本)

我绝对不会选择选项 2。持续集成是 Grady Booch 在 90 年代早期提出的。今天,他们想使用持续交付这个术语。我说我们应该一直使用持续改进。无论如何,您希望能够交付、部署、投入生产应用程序、项目、"a" 可交付成果。您绝对不想混合应用程序。您可能需要将一个应用程序部署到生产环境,而另一个应用程序出现问题。或者您只是对单个应用程序进行了非常快速的修复,并且希望通过整个过程直到今天交付。由于这些原因,我不会选择选项 2。