对于我们的Jailhouse 虚拟机管理程序的 Travis-CI 版本,我们有一个相当昂贵的环境设置,其中包括部分分发更新以引入最近的 make 版本(>=3.82,默认版本仍然只有 3.81 - Ubuntu ...) ,一个用于 ARM 的交叉工具链和一个 100 MB 的预构建 Linux 内核源包,我们需要它来编译一个树外模块。
为了减少构建时间和内核下载次数,我们目前在一次运行中按顺序构建所有配置变体(make; make clean; make...)。这对于检查构建损坏很好,但是添加了取决于构建输出的 Coverity 扫描,它不再起作用。切换到构建矩阵似乎是显而易见的解决方案,但代价是多次安装,因为 Travis-CI 似乎无法在此类构建期间重用它们。虽然我们目前只有 3 种配置变体,但未来会增加(例如,添加的每个 ARM 板都会增加一个),因此该方法并不能真正扩展。
我们有其他选择吗?我已经看过缓存,可通过基于 docker 的构建获得,但缺乏 sudo 支持阻止了这种方法。其他想法?