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

GitLab Registry清理政策配置失效及规则解读与方案咨询

GitLab Registry 清理政策问题解答

核心疑问解答

“保留每个镜像名称的最新1个标签”中的镜像名称指的是不带标签的基础名称(如foo),不是foo:v1.0.0这种带标签的完整名称。这个规则的作用是:为每个基础镜像名(比如foo),保留推送时间最晚的1个镜像manifest(以及关联的所有标签)。

旧标签未被删除的可能原因

  • 清理政策未触发:GitLab的镜像清理默认是每日定时任务,刚配置完规则若未到执行时间,旧标签不会自动删除。你可以手动触发:进入项目「Packages & Registries」→「Container Registry」→「Cleanup policies」,点击「Run cleanup now」。
  • 标签与manifest关联:如果多个旧标签指向同一个manifest,且该manifest被保留规则覆盖(比如关联的某个标签符合保留条件),所有关联标签都会被保留。例如旧标签v1.0.0和v1.0.1共享同一个manifest,而v1.0.1被保留,那v1.0.0也不会被删。
  • 规则配置不完整:若只配置“保留最新1个标签”+“删除30天以上镜像”,当latest和最新版本标签(如v1.0.1)是同一时间推送的不同manifest时,“保留最新1个”只会保留其中一个,另一个若超过30天会被删除,无法满足你同时保留两者的需求。

满足需求的配置方案

要实现「保留最新1个版本标签 + latest标签,删除30天以上旧标签,且避免30天未更新时无镜像可用」,按以下步骤配置:

  1. 添加第一个保留规则:

    • 规则类型:按标签模式匹配
    • 标签模式:latest
    • 保留方式:保留所有符合条件的镜像
      (确保latest标签无论多久未更新都不会被删除)
  2. 添加第二个保留规则:

    • 规则类型:按标签模式匹配
    • 标签模式:v*(或更精确的v\d+\.\d+\.\d+,匹配你的版本号格式)
    • 保留方式:保留每个镜像名称的最新1个标签
      (为每个基础镜像名保留推送时间最晚的1个版本标签,比如v1.0.1)
  3. 设置删除条件:

    • 勾选删除超过 X 天的镜像,将X设为30
    • 确保仅删除未被保留规则覆盖的镜像

配置完成后手动触发一次清理,即可验证效果。

额外注意事项

  • GitLab清理规则基于镜像manifest而非单个标签,只要一个manifest有任意标签符合保留规则,整个manifest及所有关联标签都会被保留。
  • 若版本标签的推送时间与版本号递增顺序一致(如v1.0.1比v1.0.0推送晚),“保留最新1个版本标签”会自动匹配到最新版本;若推送顺序与版本号不一致,需调整标签命名或确认你的GitLab版本是否支持语义化版本排序。

内容的提问来源于stack exchange,提问作者slhck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:15:41