我有一个大型的多模块项目,在 Jenkins 中从 clean 构建大约需要一个小时。
我正在对多模块项目中的所有模块版本使用 ${revision} 对 Maven CI 友好的版本控制,并且我从 Jenkins 传递了类似 -Drevision=${BUILD_NUMBER} 的内容。
这很好用,但是当部署在一个 20 人左右的团队中时效率非常低,每个 Pull Request 都需要一个新的构建。谁愿意每次修改一行代码都要等一个小时?!?
如何使用我的项目结构进行增量构建?
“增量构建”复选框的明显问题是,当我构建更改的模块(例如版本 5)时,它们都将依赖于版本 5 的未更改模块,但实际构建的最后一个版本可能是 1、2、3或 4。
因此,整个多模块项目的 ${revision} 将破坏增量构建
我的另一个问题是我正在使用多个从站,这意味着我不能简单地依赖自上次构建以来未更改的文件系统(相同的 Maven 本地存储库、相同的工作树等)。
为了在不同从站上的构建之间共享未更改的工件,我必须使用 Maven 存储库(例如 Nexus),或者通过 SSH 进行某种文件复制(例如,每个构建传输回 Master,然后再传输到从站)