我们在 docker 容器中运行 gradle 构建(原因是构建需要我们不想在主机上安装的软件;node、wine 等。主机上甚至没有安装 java 或 gradle)。
启动每个缓存为空的容器的速度非常慢。
我已经设置了 gradle-4.0 的 http 构建缓存。在大多数情况下,这避免了 java 编译的需要。但性能增益相当低,因为构建时间主要是下载依赖项。 gradlew --parallel
有助于缓解这一点,但要真正提高构建速度,应该完全避免下载。
将 ~/.gradle 共享为 docker 卷是有问题的,因为当容器并行运行时会导致争用 ( https://github.com/gradle/gradle/issues/851 )。
那么,还可以做些什么来避免一遍又一遍地下载相同的工件?
最佳答案
虽然从并行运行的容器共享 gradle 缓存是有问题的,但当容器顺序运行时重用 gradle 缓存是绝对可以的。由 jenkins 启动的构建按顺序运行。
可以通过使用 .gradle 文件夹的 docker 卷来加快 Jenkins 构建速度。唯一的缺点是,每个作业都需要自己的卷。
关于docker - 如何与 docker 容器共享 gradle 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44969113/