我们的团队有一个 gradle 多项目,包含超过 100 个项目并且还在不断增长。
这会导致两个问题:
- 我们运行 gradle build 的机器没有足够的磁盘空间来同时存储所有处于构建状态的项目
- 构建需要几个小时才能完成
我们有 16 台服务器可供使用,我们希望通过分配负载来减少构建时间和单个磁盘使用量。阅读 gradle 文档后,我们无法找到这样做的方法,也找不到其他遇到同样情况的人。
我们通过创建自定义任务缓解了第一个问题:
task release(type: GradleBuild){
tasks = ['clean', 'build', 'deploy', 'clean']
}
运行gradlew release
会为每个项目运行所有 4 个任务,然后再转到下一个项目(虽然我觉得应该有更好的方法)。如果没有这个任务,clean 会为所有项目运行,然后 build 会为所有项目运行,并会因为磁盘空间不足而在部署之前就死机。
我们还没有找到缓解构建时间问题的方法。
我们有没有办法利用所有服务器来分发这个庞大的构建?