我们的软件是模块化的,我在一个项目中有大约20个git回购。
如果测试失败,有时很难找到匹配的提交,因为有几个开发人员正在处理这些20个回购。
我知道这个测试昨天有效,今天无法接受。
有时我使用git-bisec,但这只适用于一个git repo。
两个git repos中的更改通常会导致测试失败。
我可以自己编写一个脏脚本循环遍历我的N git repos,但在此之前,我想知道专家如何解决这个问题。
我使用Python,Django和pytest,但AFAIK对于这个问题无关紧要。
答案 0 :(得分:3)
我个人更喜欢使用repo tool来管理复杂的项目。将这20个repos放在manifest.xml中,每次构建开始时,如果构建失败,则创建补丁清单,repo diff会显示更改的内容和位置。
答案 1 :(得分:2)
QA工具的类别用于"反向依赖" CI构建。因此,每次进行较低级别的更改时,您的高级项目都会重建。在规模上,它可能是资源密集型的。
如果您停止处理repo-to-repo关系并开始遵循子组件的版本发布方法,则会删除整个问题类。然后,您可以跟踪较低级别依赖项的版本,并知道何时升级它已破坏。如果您希望将其系统化,那么您的CI可能会针对多个版本的依赖项构建。
Git子模块完成对单个提交的跟踪,因此您可以再次决定何时合并较低级别的更改。 (值得注意的是,如果您只更新到标记的版本提交,也可以像已发布的版本一样使用。)