我正在与其他许多常规贡献者一起进行一个由研究主导的大型开源项目。因为该项目现在很大,所以一个财团(由两名全职员工和几名成员组成)负责维护该项目,持续集成(CI)等。他们只是没有时间进行外部集成虽然贡献。
该项目由一个“核心”框架组成,该框架包含大约半百万行代码,由联盟维护的一堆“插件”,以及几个外部插件,而我们大多数都不是。甚至没有意识到。
目前,我们的CI正在构建核心和维护的插件。
我们面临的主要问题之一是,大多数贡献者(尤其是偶尔的贡献者)并未构建90%的可维护插件,因此,当他们提议对核心进行重构更改时(这些日子经常发生),他们在GitHub上发出拉取请求之前检查了代码是否在其计算机上编译了。
代码工作正常,他们很高兴,然后CI结束了构建,问题开始了:在由联盟维护的插件中编译失败,表明贡献者未在其计算机上构建。
该插件可能依赖于第三方库(例如CUDA),并且用户不希望,不知道该怎么做,或者只是出于硬件原因而不能编译该损坏的插件。
因此,那么-PR永远处于永远不会合并的PR的边缘-或贡献者在损坏的插件的源中抓取重命名的变量,更改代码,推入他/她的分支,等待CI会完成编译,通常会收到更多错误,并重复执行该过程,直到CI满意为止-或财团中两个已经超额预定的永久物之一提供帮助,并尝试在其计算机上修复PR。
这些选项都不可行,但我们只是不知道如何做不同。您是否曾经遇到过类似的项目情况?如果是这样,您如何处理这个问题?有没有我在这里看不到的解决方案?