我在 Jenkins 中有一个 Maven 构建作业设置,具有以下值得注意的配置:
- It is a multi-module job with 75 modules
- It is built incrementally (build only changed modules)
- Automatic artifact archiving is disabled
构建时间约为 20 分钟。但是,从一段时间开始,构建时间急剧增加到 1 小时 15 分钟。这项工作仍在逐步构建,当前的内部版本号约为 1450。我只保留了 3 个旧版本。我的问题是为什么构建时间会有如此高的增量?
以下是我尝试并观察到的事情:
Maven 作业默认创建指纹。对于大量构建(当前为 1450),可能会在构建期间访问大量指纹数据,因此会增加整体构建时间。但是,我清理了所有现有的指纹并尝试重建项目。这对构建时间没有影响(仍然需要 1 小时才能完成)。
我尝试进行完整构建,而不是增量构建,以了解是否花费大量时间来识别要构建的模块。这也没有帮助,完整的构建在 1 小时 20 分钟内完成。
我还尝试在专用奴隶上构建作业,以防问题是由于资源可用性造成的。这对构建时间没有影响。
唯一有效的是重命名工作本身。重命名后构建将在大约 20 分钟内再次完成。但我不确定这是否是一个理想的解决方案。我也不明白这种重命名工作的方法背后的逻辑。
有人可以建议 Maven build 内部发生了什么以增加大量构建后的构建时间吗?我正在使用 Jenkins v1.560 和 maven 项目插件 v2.0。升级 Maven 插件或 Jenkins 现在不是我的选择。
更新 1
根据对构建输出的分析,主要构建时间花在“解析 POM”(大约 30 分钟)和“元数据收集”步骤(大约 20 分钟)上。有没有人知道这两个步骤中到底发生了什么?