MacOSX上GitLab Runner执行CI时如何清理本地缓存?
解决方案
一、清理本地缓存的几种方式
1. 本地GitLab Runner CLI命令
直接用Runner CLI清理所有缓存,或指定项目/缓存key:
# 清理所有缓存 gitlab-runner cache delete --all # 清理指定项目和缓存key的缓存(项目ID从流水线日志的project-88获取) gitlab-runner cache delete --project-id 88 --key feature-unittests-3
2. 直接删除本地缓存目录
Homebrew安装的GitLab Runner,本地缓存默认存在~/.gitlab-runner/cache目录,直接删除对应项目的缓存文件夹即可:
rm -rf ~/.gitlab-runner/cache/economiedenergie/arkea/
3. GitLab网页端操作
网页端无法直接清理本地Runner缓存(缓存存在你的笔记本上,而非GitLab服务器),但可以通过以下方式规避旧缓存:
- 触发流水线时,手动添加变量
CACHE_KEY为新值(比如feature-unittests-reset),Runner会使用新缓存key,不再复用旧缓存。
4. 在.gitlab-ci.yml中配置
- 临时禁用缓存:全局或单个job添加
cache: {}:
# 全局禁用 cache: {} # 单个job禁用 job:install-dev: cache: {}
- 生成新缓存key:修改缓存key为包含流水线ID的动态值,每次流水线都会生成新缓存:
cache: key: $CI_COMMIT_REF_SLUG-$CI_PIPELINE_ID paths: - vendor/ - node_modules/
二、关于缓存提示的原因
你的config.toml中[runners.cache]未配置共享缓存服务器(如S3、GitLab自带缓存服务)的URL,因此Runner默认使用本地文件系统缓存(即~/.gitlab-runner/cache)。这个提示只是告知当前使用本地缓存,属于正常现象,无需处理。
另外,配置中runners.docker.disable_cache = true仅禁用Docker容器卷缓存,不影响GitLab Runner的本地文件缓存机制。
三、before_script未执行的真实原因
你误解了缓存的影响——每个job定义的before_script会覆盖全局before_script,所以首次运行时,job:install-dev仅执行自身的echo "Starting dev stage 'install'.",并未执行全局的安装make等依赖的命令,这才是依赖缺失报错的根源。
解决方法:使用!reference引用全局before_script,保留基础命令的同时添加自定义内容:
before_script: - echo "Install make:" - sudo apt-get -y install make - echo "Configure composer path & check platform requirements :" - export PATH="$PATH:$HOME/.composer/vendor/bin" - php composer check-platform-reqs job:install-dev: stage: install except: - master before_script: - !reference [.before_script] - echo "Starting dev stage 'install'." script: make install
内容的提问来源于stack exchange,提问作者Chenille33
相关产品推荐
相关产品推荐

