Artifact Registry清理策略未生效,求助排查原因及解决办法
Artifact Registry清理策略未生效的常见原因及排查方向
很多使用Artifact Registry的用户都遇到过类似的清理策略不生效问题,结合你的场景(GitHub Actions推送镜像),可以从以下几个方向排查:
镜像"最新版本"的判定逻辑
Artifact Registry的清理策略是按镜像的推送时间来排序判定最新版本,而非镜像标签的版本号顺序。如果你的GitHub Actions生成的镜像标签没有按时间递进命名(比如用了自定义版本号而非时间戳),或者存在多个标签指向同一镜像的情况,会导致策略无法正确识别需要保留的镜像。策略的作用范围是否覆盖全仓库
检查清理策略的配置,确认是否应用到了仓库的所有路径。如果你的仓库里有按环境、项目划分的子路径镜像,策略可能仅针对指定路径生效,未覆盖的路径下的旧镜像不会被清理。镜像是否被标记为不可变
如果GitHub Actions在推送镜像时添加了immutable标记,Artifact Registry会将这类镜像视为不可删除对象,清理策略会自动跳过。可以通过查看镜像元数据确认是否存在该标记。策略执行的触发与延迟问题
清理策略并非实时执行,通常按固定周期(如每日)运行,仓库镜像量较大时可能存在执行延迟。若策略已启用数月仍未生效,可尝试通过命令重新设置策略来触发执行:
gcloud artifacts repositories set-cleanup-policy REPOSITORY_NAME --project=PROJECT_ID --location=LOCATION --cleanup-policy=POLICY_NAME
- 镜像是否被关联服务引用
如果旧镜像被Cloud Run、GKE等正在运行的服务关联使用,Artifact Registry会保留这些镜像以避免服务中断,不受清理策略影响。可以检查是否有运行中服务依赖了这些旧镜像。
内容的提问来源于stack exchange,提问作者Evan Volgas
相关产品推荐
相关产品推荐

