我们的软件是模块化的,一个项目中有大约20个git仓库。如果测试失败,由于多个开发人员在这20个仓库上工作,有时很难找到匹配的提交记录。我知道测试昨天是正常的,今天不行了。有时候我会使用git-bisec,但这只适用于一个git仓库。通常情况下,两个git仓库的更改会导致测试失败。我可以编写一个简单的脚本来遍历我的N个git仓库,但在这样做之前,我想知道专家们如何解决这个问题。我使用Python、Django和pytest,但据我所知,这并不影响这个问题。
有一个针对“反依赖”CI构建的QA工具类别。这样,每当进行较低级别的更改时,您的高级项目就会重新构建。在大规模情况下,它可能会消耗资源。
如果您停止处理存储库之间的关系,并开始遵循子组件版本发布方法,则可以消除整个问题类别。然后,您可以跟踪较低级别依赖项的版本,并知道何时进行升级会出现故障。如果您想要系统化,您的CI可以针对多个依赖项版本进行构建。
Git子模块可以完成单个提交的跟踪,因此您可以再次决定何时合并来自较低层次的更改。(值得注意的是,如果您仅更新到已标记的发布提交,它也可以像已发布的版本一样使用。)