【发布时间】:2019-03-03 19:04:39
【问题描述】:
我正在尝试使用缓存机制,但它不起作用,我尝试了不同的尝试,但它们似乎都不适合我。列出的任务在我的机器上大约需要 75 秒,在 gitlab ci 上大约需要 5-6 分钟,运行者在每个管道中再次下载依赖项。
问题是如何用gitlab ci缓存下载的deps?
image: dockerregistry.my-image:1.0.0
variables:
GIT_SUBMODULE_STRATEGY: normal
GRADLE_USER_HOME: $CI_PROJECT_DIR/.gradle
cache:
paths:
- .gradle/wrapper
- .gradle/caches
before_script:
- echo `pwd`
- echo `$CI_PROJECT_DIR`
- rm -f .gradle/caches/modules-2/modules-2.lock
- rm -fr .gradle/caches/*/plugin-resolution/
build:
stage: build
script:
- ./gradlew assemble
junit:
stage: test
script:
- ./gradlew test
谢谢
更新
执行者:Kubernetes
Gitlab版本:11.0.x
Submodule path 'my-other-application': checked out 'fxxxx1'
Checking cache for default...
Successfully extracted cache
.........
Running after script...
$ echo "End CI"
End CI
Creating cache default...
.gradle/wrapper: found 222 matching files
.gradle/caches: found 8474 matching files
【问题讨论】:
-
Gitlab CI 中的缓存可能是一个真正的痛苦......您能否编辑您的问题以包括:日志中关于缓存的内容(通常在每个作业的开头)是什么?您使用的是什么类型的执行器(shell、vbox、...)?
-
@MaximilianC。我已经更新了原帖。奇怪的是,这项工作正在提取缓存,但它仍然下载 Internet/Intranet (nexus)。
-
嗯。我没有使用过这种 executor 类型(知道它的怪癖)也没有 gradle ......在你之前的脚本中,你能否添加一些东西来让你了解文件夹是否被正确填充:例如列出所有文件stackoverflow.com/questions/2437452/…(显然,这将是太多的文件,不能在这里发布它们:D)
-
你确定之前的脚本没有删除你的缓存吗?
标签: java caching gradle gitlab-ci