continuous-integration - 如何在 monorepo 中对产品进行版本控制?

标签 continuous-integration versioning continuous-deployment monorepo

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

我正在努力寻找我想要找到的答案的地方是版本控制。

当您的所有项目和产品都在一个单一存储库中时,版本控制策略是什么?

  • 1 版本适合所有人?
  • 具有独立版本控制的 Git 子模块(有点打破了拥有单一存储库的点)
  • 其他策略?

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

    最佳答案

    What is the versioning strategy when all of your projects and products are inside a monorepo?



    我建议一个版本适合所有人,原因如下:
  • 发布产品时,您可以将整个分支标记为 release-x.x.x例如。如果出现错误,您无需检查“XXX 的哪个版本是 YYY 使用的”
  • 它还可以更轻松地强制 XXX 的 x.x.x 版本使用 YYY 的 x.x.x 版本。从本质上讲,使您的项目保持同步。当然,你如何进行这取决于你的项目是用什么技术编写的。

  • And from a CI perspective, when you commit something in project A, should you launch the whole suite of tests in all of the projects to make sure that nothing broke, even though there was no necessarily a change made to a dependency/share module?



    如果测试不需要特别长的时间来执行,那么这不会造成任何伤害。我肯定会推荐这个。您的测试运行得越频繁,您就能越早发现时间相关或环境相关的错误。

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

    关于continuous-integration - 如何在 monorepo 中对产品进行版本控制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47225641/

    相关文章:

    architecture - 微服务版本控制

    docker - Docker 容器中的配置管理

    continuous-integration - 如何使用自定义 NuGet 提要在 VSTS 上运行 dotnet 测试?

    java - 如何为 travis CI 指定 JDK 版本

    programming-languages - 那么,编程语言是否会像日常应用程序一样定期更新,还是只是 x.0 版本?

    versioning - 实现版本控制系统的好策略

    tomcat - 具有数据库更改控制的持续部署工具

    maven - 如何实现 Web 服务的持续部署

    build - 发布构建与夜间构建

    Azure 与用户上传的持续集成