考虑这个.gitlab-ci.yml
:
variables:
MAVEN_OPTS: "-Dmaven.repo.local=/root/.m2/repository"
cache:
key: "M2"
paths:
- /root/.m2/repository
当直接在 gitlab 中运行时,这可以正常工作,但当运行时在本地不起作用:
gitlab-runner exec docker test
如果我像这样在本地运行它,我可以看到类似的消息Successfully extracted cache
,但随后它会重新下载所有 Maven 依赖项,在我的例子中这意味着下载数百兆字节。
我看不出本地运行和远程运行之间的区别,我想它们应该工作相同?
这个缓存存储在哪里?我可以以某种方式验证是否确实存储了某些内容吗?
As in 这个问题 https://gitlab.com/gitlab-org/gitlab-ce/issues/15167,你需要将你的m2缓存文件夹放入一个卷中,否则容器每次都会从头开始(清空缓存),提示maven下载一切一切重新来过。
该问题还报告了,而不是使用卷:
The cache.paths
如果您将存储库指向以下内容,则不需要指定值/cache
;我当前实际使用的版本在下面,我没有看到'Removing..
' 行.m2
:
image:
maven:3.3.9-jdk-8
variables:
MAVEN_OPTS: -Dmaven.repo.local=/cache/maven.repository
test:
script: "mvn test"
但使用卷仍然是最便携的解决方案:
我们编辑配置以包含名为的本地 docker 主机卷host-cache
,我们只需替换/cache
上面的参考文献与/host-cache
它不依赖于任何未记录的运行程序默认值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)