我们在docker容器中运行gradle构建(原因是构建需要我们不想在主机上安装的软件;节点,葡萄酒等。甚至主机上都没有安装java或gradle)。
使用空缓存启动每个容器非常烦人。
我已经设置了gradle-4.0的http构建缓存。在大多数情况下,这避免了java编译的需要。性能提升虽然很低,因为构建时间主要是下载依赖性。 gradlew --parallel
帮助减轻了一点,但为了真正提升构建,应该完全避免下载。
将〜/ .gradle共享为docker卷是有问题的,因为当容器并行运行时会导致争用(https://github.com/gradle/gradle/issues/851)。
那么,还有什么方法可以避免一遍又一遍地下载相同的工件?
答案 0 :(得分:1)
虽然从并行运行的容器共享gradle缓存是有问题的,但是当容器按顺序运行时,重复使用gradle缓存是绝对可以的。由jenkins发布的构建顺序运行。
可以通过使用.gradle文件夹的docker卷来加速Jenkins构建。唯一的缺点是,每项工作都需要自己的数量。
答案 1 :(得分:0)
您可以构建包含缓存的docker镜像,然后使用此图像运行构建容器。