docker - 如何与 docker 容器共享 gradle 缓存

标签 docker gradle

我们在 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/

相关文章:

docker - 连接docker容器

c++ - 如何让 ASan 使用 4.12.3 Linux 内核?

gradle - 使用Gradle中的参数运行可执行jar

docker - 如何确定扩展服务的副本数

windows - 如何修复docker-machine ip?

gradle - 在 gradle distZip 包中包含 spring 上下文文件

android-studio - 如何修复Gradle失败同步新的Android Studio

android - Android Studio构建Gradle同步失败

docker - 挂载 gcePersistentDisk kubernetes 卷非常慢

android - Android Studio 2.0,org.gradle.process.internal.ExecException:处理'命令错误,退出值非零3