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