管道完成后,是否可以使用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
答案 0 :(得分:6)
答案 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容器。