使用Gitlab CI清除管道缓存

时间:2018-01-26 21:18:10

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

管道完成后,是否可以使用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

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

我在这里遗漏了什么吗?

目前正在运行Gitlab-EE 10.3.3

3 个答案:

答案 0 :(得分:6)

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

enter image description here

答案 1 :(得分:5)

这不是一个完美的解决方案,但我们最终在.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/"

答案 2 :(得分:0)

来自@ayufan的Gitlab项目大师之一:

  

缓存存储在/home/gitlab-runner/cache或docker容器docker ps | grep -cache-中。

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