.m2 的 Docker 缓存在本地不起作用

2024-05-26

考虑这个.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(使用前将#替换为@)

.m2 的 Docker 缓存在本地不起作用 的相关文章

随机推荐