我对GitLab的注册表清理策略有点困惑。
我有几个注册中心,每隔几周左右就会推一次图像foo的标记,名为foo:v1.0.0、foo:v1.0.1等。标记latest总是与版本标记一起推送。但是,在生产中从来不使用latest来固定依赖项。
我想保留最近的一个标签,并清除任何标签,比如说,30天。
我目前有以下政策:

我希望我的存储库中只有两个标记(latest和foo:v1.0.1),然而,还有15个标记,可以追溯到6个月前和更早的时候。
现在,当我看“保持最近的行”- what时,“每个图像名称一个标签”到底意味着这里吗?是“图像名”图像的名称,例如foo,那么策略不应该在我的存储库中留下15张图像,只有1张。
如果“图像名称”实际上是名称加上标记(例如,foo:v1.0.0),那么这个设置的目的是什么?这意味着任何图像都将被保留!
我想我可以删除保存规则,但我也不想简单地删除除latest 1之外的所有映像,因为latest从未在生产中使用过,如果我在30天内不更新一个映像,它将被删除,并且我不能再部署了。
除了编写我自己的清理脚本之外,还有其他很好的解决方案吗?
发布于 2022-09-23 22:45:41
确切地说,“每个图像名称一个标签”到底是什么意思?
“图像名称”实际上指的是这个单词的停靠注册中心API意义上的‘存储库’。我猜GitLab UI避免了这个术语,以防止与git/project含义中的“存储库”合并,因为它会让人感到困惑,因为单个GitLab项目/回购可以保存许多独立的码头映像。
因此,假设您有两个图像myproject/foo和myproject/bar,“每个图像1标记”意味着图像myproject/foo的1标记和myproject/bar的1标记。这并不意味着图像和标签的结合。
.*的保留规则是防止任何标记被清除,这是清理政策的第4步。
清理政策:
latest的标记。name_regex (要过期的标记),从列表中排除不匹配的名称。name_regex_keep 从列表中排除与值匹配的任何标记(要保留的标记).created_date命令剩余的标记。keep_n值的N个标记(要保留的标记数)。older_than值(Expiration )更近的标记。因此,您可能希望更改您的保持正则表达式,使其只匹配您希望保留的图像--比如您在生产中使用的标记(例如,v.+用于匹配以v开头的标记)。
https://stackoverflow.com/questions/73814623
复制相似问题