You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:35:19