使用 Gitlab 清除管道缓存 CI

Clearing the pipeline cache with Gitlab CI

是否可以在管道完成后使用 Gitlab CI 使管道缓存失效或清除?

我的 .gitlab-ci.yml 文件具有以下全局缓存定义

cache:
  key: "%CI_PIPELINE_ID%"
  paths:
    - './msvc/Project1`/bin/Debug'
    - './msvc/Project2`/bin/Debug'
    - './msvc/Project3`/bin/Debug'

cache-key 值指定每个管道应维护自己的缓存,这工作正常,但缓存文件在管道完成后继续存在。由于有数百个管道 运行,大小开始增加,手动删除我们机器上的缓存文件夹并不是一个好的解决方案。

我尝试在管道末端添加清理作业

cleanup:
  stage: cleanup
  script:
  - rm -rf './msvc/Project1/bin'
  - rm -rf './msvc/Project2/bin'
  - rm -rf './msvc/Project3/bin'
  when: always

删除本地文件,但不会从缓存中删除它们。

我是不是漏掉了什么?

当前 运行ning Gitlab-EE 10.3.3

引用Gitlab项目大师之一@ayufan的话:

The cache is stored in /home/gitlab-runner/cache or as docker container docker ps | grep -cache-.

因此您可以尝试删除该目录并清除所有返回的 docker 容器。

这不是一个完美的解决方案,但我们最终在 .gitlab-ci.yaml 文件的末尾创建了一个清理作业,该作业从文件系统中删除了缓存目录。

这样一来,每个管道都有自己独特的缓存,不会随着时间的推移弄乱文件系统。

cleanup_job:
  stage: cleanup
  script:
    - echo "Cleaning up"
    - rm -rf "%CACHE_PATH%/%CI_PIPELINE_ID%"
  when: always

哪里

CACHE_PATH: "C:/gitlab-runner/cache/group/project/repo/"

工件是评论中提到的解决方案。但是,管道页面中有一个清除缓存的选项,如下图所示。