gitlab-ci/cd(六+)cache的保存目录

1、maven打包不设置cache目录存在位置

docker、新兴技术能力gitlab-ci/cd(六+)cache的保存目录插图

为什么会存在这个位置呢?

因为maven的配置文件

<!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->

2、指定特定的目录

方式一:采用bing mount方式

2.1.1 修改config.toml

docker、新兴技术能力gitlab-ci/cd(六+)cache的保存目录插图1

然后在pepiline中定义maven保存路径

variables:
  MAVEN_OPTS: "-Djava.awt.headless=true -Dmaven.repo.local=/opt/cache/.m2/repository"
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version"

build:
  image: maven:3.8.2-jdk-8  
  # cache:
  #   paths:
  #     - .m2/repository
  stage: build
  tags:
    - docker
  script:
    - mvn clean package -Dmaven.test.skip=true
    - sleep 3600

方法二:用volume。配置文件默认的/cache

查看gitlab的pipeline源代码和cache挂载docker目录

方法一:

[root@docker volumes]# cd /var/lib/docker/volumes/
[root@docker volumes]# tree  -Ld 5
docker、新兴技术能力gitlab-ci/cd(六+)cache的保存目录插图2
cache存放目录

方法二:

pepiline

variables:
  MAVEN_OPTS: "-Djava.awt.headless=true -Dmaven.repo.local=.m2/repository"
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version"

build:
  image: maven:3.8.2-jdk-8  
  cache:
    paths:
      - .m2/repository
  stage: build
  tags:
    - docker
  script:
    - mvn clean package -Dmaven.test.skip=true

通过研究发现runner的缓存文件存放在:/var/lib/docker/volumes/下以runner-{runnerid}-开头的文件夹中,
每个项目的缓存存放方式:runner-{runnerid}-projects-{projectid}-concurrent-{num}-cache-3c3f060a0374fc8bc39395164f415a70|c33bcaa1fd2c77edfc3893b41966cea8
以3c3f060a0374fc8bc39395164f415a70结尾的文件夹中存放的就是缓存文件,以c33bcaa1fd2c77edfc3893b41966cea8结尾的文件夹中存放的是代码源文件。