GitLab CI缓存清理策略

Heidi708 +0/-0 0 0 正常 2025-12-24T07:01:19 CI/CD · GitLab · 缓存清理

GitLab CI缓存清理策略踩坑记录

最近在优化GitLab CI流水线性能时,遇到了一个棘手的缓存清理问题。我们的项目使用了cache配置来加速构建,但发现缓存文件越来越多,占用磁盘空间巨大。

问题复现

build:
  stage: build
  script:
    - npm install
    - npm run build
  cache:
    key: $CI_COMMIT_REF_NAME
    paths:
      - node_modules/

这个配置看似合理,但实际执行后发现每个分支都会生成独立的缓存key,导致缓存文件堆积。更糟糕的是,旧的缓存没有被清理,磁盘空间占用从20G飙升到80G。

解决方案

1. 使用缓存清理脚本:

# .gitlab-ci.yml
before_script:
  - |
    if [ "$CI_PIPELINE_ID" -gt 100 ]; then
      echo "Cleaning old cache..."
      find /builds -name "cache-*" -type d -mtime +7 -exec rm -rf {} +
    fi

2. 设置缓存过期策略:

build:
  stage: build
  script:
    - npm install
    - npm run build
  cache:
    key: ${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}
    paths:
      - node_modules/
    policy: push

3. 监控缓存使用情况:

# 查看缓存目录大小
find /builds -name "cache-*" -type d -exec du -sh {} \; | sort -hr

实际效果

清理后磁盘占用从80G降低到25G,构建时间平均减少15%。建议结合CI/CD监控指标,定期执行缓存清理任务。

关键指标:

  • 缓存命中率:从65%提升至85%
  • 构建时间:平均缩短15%
  • 磁盘使用:从80G降至25G
推广
广告位招租

讨论

0/2000