首页 > 解决方案 > 您使用什么工具或技术来跨存储库同步配置?

问题描述

我们有几个基础存储库,用于快速构建新项目。这些包括用于以下内容的基本存储库:

基本存储库包含启动新项目所需的所有配置和文件夹结构,类似于ng new, create-react-app, yeoman 生成器等。这包括 CI 配置、测试配置、linting 配置、tsconfig、package.json 以及脚本和开发依赖项, 用于设置、扩展建议、启动配置等的 VSCode 文件。基本上,存储库包含您需要在这些类似存储库之间共享的所有内容,除了代码

有一些工具可以在 repos 之间共享代码,比如 bit,或者您也可以发布库来共享代码,我们广泛使用这些工具。但是,我还没有找到在许多存储库之间共享配置文件的好方法。我们可以简单地从基础存储库克隆或编写我们自己的生成器,但问题是保持配置同步。例如,如果我们更改 CI 配置,我不想记住哪些 50 个存储库基于也需要更改的存储库。

我们不能成为这里唯一一家拥有超过 100 个 repos 的公司,而且随着我们拆分成越来越多的分布式服务和库,我们的增长也看不到尽头。我们可以采用 monorepository 模式,但它仍然没有改变这样一个事实,即 monorepo 中的每个项目仍然需要自己的配置,并且必须在所有项目之间保持同步。

所以问题是,我缺少什么工具或技术可以让这些配置在许多不同的存储库中保持同步?

标签: gitrepositorymicroservicesconfig

解决方案


这是一个很酷的问题要解决。我觉得我们有一个非常老套的解决方案来避免重复工作。我们在eslintrc包含prettierrc.gitignore. 该package.json脚本指向该文件夹中的配置文件。

它不是它自己的 repo,我们使用husky pre-commithook 来运行 lint 和格式化脚本。在制作 PR 时我们不会运行它(也许我们应该这样做)。现在没有什么可以阻止您使用该no-verify标志来提交错误代码,但代码审查应该会发现这一点。


推荐阅读