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

时间:2018-02-07 00:26:12

标签: docker gitlab gitlab-ci gitlab-ci-runner

考虑.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依赖项,在我的情况下意味着下载数百兆字节。

我看不出本地和远程运行它们之间的区别,我猜它们都应该一样吗?

此缓存存储在何处?我可以以某种方式验证存储的内容吗?

1 个答案:

答案 0 :(得分:1)

this issue一样,您需要将m2缓存文件夹放入卷中,或者容器每次都从头开始(空缓存),让maven下载所有内容全部再一次。

该问题还报告,而不是使用卷:

  

如果您将回购指向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" 

但使用音量仍然是最便携的解决方案:

  

我们编辑配置以包含名为host-cache的本地docker主机卷,我们只需将/cache引用替换为/host-cache,而<td> <a *ngIf="(books.status== 'FAILED')" (click)="openWindow(books.id)" [style.color]="visitedColor">{{books.id}}</a></td> 不依赖于任何未记录的运行程序默认值。< / p>