如何在monorepo内部版本的产品?

时间:2017-11-10 15:01:18

标签: continuous-integration versioning continuous-deployment monorepo

我一直在教育自己关于monorepos,因为我相信这对我的团队和我们项目的当前状态来说是一个很好的解决方案。我们有多个Web产品(客户端门户,内部门户,API,核心共享代码)。

我正在努力寻找我想要找到的答案版本。

当您的所有项目和产品都在monorepo中时,版本控制策略是什么?

  • 1版适合所有人吗?
  • 具有独立版本控制的Git子模块(有点打破了单声道回购的意义)
  • 其他策略?

从CI的角度来看,当您在项目A中提交某些内容时,您是否应该在所有项目中启动整套测试以确保没有任何损坏,即使没有必要对依赖项进行更改/分享模块?

1 个答案:

答案 0 :(得分:2)

  

当您的所有项目和产品都在monorepo中时,版本控制策略是什么?

我建议一个版本适合所有版本,原因如下:

  • 发布产品时,您可以将整个分支标记为release-x.x.x。如果出现错误,您将无需检查“哪个版本的XXX是YYY使用”
  • 它还可以更容易强制XXX的x.x.x版本使用YYY的x.x.x版本。实质上,保持项目同步。当然,这取决于您的项目所使用的技术。
  

从CI的角度来看,当您在项目A中提交某些内容时,您是否应该在所有项目中启动整套测试以确保没有任何损坏,即使没有必要对依赖项进行更改/分享模块?

如果测试执行时间不长,则不会造成任何伤害。我肯定会推荐这个。您的测试运行得越频繁,您就越能发现依赖于时间或依赖于环境的错误。

如果您不想因任何原因一直运行测试,您可以查询您的VCS并编写一个脚本,该脚本根据更改的内容有条件地触发测试。这很大程度上依赖于VCS与CI服务器之间的集成。