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

使用Docker镜像时,GitLab CI缓存的简易清理方法

GitLab CI 缓存清理解决方案

一、清理缓存中的单个文件(如pom.xml)

要在流水线结束后移除缓存里的特定文件,可新增一个专门的清理阶段,通过强制推送更新后的缓存来实现:

  1. 在stages中添加cleanup阶段
  2. 编写清理任务,删除目标文件后用cache:policy: push覆盖原有缓存

示例配置:

default:
  image: maven:3.9.0-eclipse-temurin-17
  tags:
    - k8s-aws

stages:
  - build
  - deploy
  - cleanup

cache:
  paths:
    - .m2/repository/
    - target/
    - pom.xml

build-branch:
  stage: build
  script:
    - some script which alter the pom.xml

deploy:
  stage: deploy
  script:
    - mvn deploy

cleanup-pom-cache:
  stage: cleanup
  script:
    - rm -f pom.xml
  cache:
    policy: push
    paths:
      - .m2/repository/
      - target/
      - pom.xml

此方案中,清理任务执行后会主动推送修改后的缓存,后续流水线拉取的缓存将不再包含被删除的pom.xml。

二、清空全部缓存的方法

1. 动态缓存键实现“每次流水线用新缓存”

通过将缓存键设置为流水线唯一ID,让每个流水线使用独立缓存,旧缓存会被GitLab自动回收:

cache:
  key: "$CI_PIPELINE_ID"
  paths:
    - .m2/repository/
    - target/
    - pom.xml

2. 流水线结束时强制清空缓存

新增清理阶段,删除所有缓存路径下的文件并推送空缓存:

cleanup-full-cache:
  stage: cleanup
  script:
    - rm -rf .m2/repository/ target/ pom.xml
  cache:
    policy: push
    paths:
      - .m2/repository/
      - target/
      - pom.xml

3. 手动清理项目所有缓存

在GitLab项目的设置 → CI/CD → 缓存页面,点击“清理缓存”按钮,可一键清空项目所有缓存。

三、关于Docker镜像与缓存持久化的说明

GitLab CI的缓存存储在独立的后端(GitLab服务器或外部存储如S3),与作业使用的Docker容器分离。容器销毁后,缓存会持续保留,直到被GitLab的缓存回收策略处理或主动清理,这就是你看到缓存持久化的原因。

内容的提问来源于stack exchange,提问作者рüффп

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:37:23