首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GitLab注册表清理策略:如何保留最近的n个标记,但删除其他标记?

GitLab注册表清理策略:如何保留最近的n个标记,但删除其他标记?
EN

Stack Overflow用户
提问于 2022-09-22 12:26:58
回答 1查看 114关注 0票数 0

我对GitLab的注册表清理策略有点困惑。

我有几个注册中心,每隔几周左右就会推一次图像foo的标记,名为foo:v1.0.0foo:v1.0.1等。标记latest总是与版本标记一起推送。但是,在生产中从来不使用latest来固定依赖项。

我想保留最近的一个标签,并清除任何标签,比如说,30天。

我目前有以下政策:

我希望我的存储库中只有两个标记(latestfoo:v1.0.1),然而,还有15个标记,可以追溯到6个月前和更早的时候。

现在,当我看“保持最近的行”- what时,“每个图像名称一个标签”到底意味着这里吗?是“图像名”图像的名称,例如foo,那么策略不应该在我的存储库中留下15张图像,只有1张。

如果“图像名称”实际上是名称加上标记(例如,foo:v1.0.0),那么这个设置的目的是什么?这意味着任何图像都将被保留!

我想我可以删除保存规则,但我也不想简单地删除除latest 1之外的所有映像,因为latest从未在生产中使用过,如果我在30天内不更新一个映像,它将被删除,并且我不能再部署了。

除了编写我自己的清理脚本之外,还有其他很好的解决方案吗?

EN

回答 1

Stack Overflow用户

发布于 2022-09-23 22:45:41

确切地说,“每个图像名称一个标签”到底是什么意思?

“图像名称”实际上指的是这个单词的停靠注册中心API意义上的‘存储库’。我猜GitLab UI避免了这个术语,以防止与git/project含义中的“存储库”合并,因为它会让人感到困惑,因为单个GitLab项目/回购可以保存许多独立的码头映像。

因此,假设您有两个图像myproject/foomyproject/bar,“每个图像1标记”意味着图像myproject/foo的1标记和myproject/bar的1标记。这并不意味着图像和标签的结合。

.*的保留规则是防止任何标记被清除,这是清理政策的第4步。

清理政策:

  1. 收集列表中给定存储库的所有标记。
  2. 从列表中排除名为latest的标记。
  3. 计算name_regex (要过期的标记),从列表中排除不匹配的名称。
  4. name_regex_keep 从列表中排除与值匹配的任何标记(要保留的标记).
  5. 排除没有清单(不在UI中选项的一部分)的任何标记。
  6. 通过created_date命令剩余的标记。
  7. 从列表中排除基于keep_n值的N个标记(要保留的标记数)。
  8. 从列表中排除比older_than值(Expiration )更近的标记。
  9. 最后,列表中的其余标记将从容器注册表中删除。

因此,您可能希望更改您的保持正则表达式,使其只匹配您希望保留的图像--比如您在生产中使用的标记(例如,v.+用于匹配以v开头的标记)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73814623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档