GitLab制品存储占用过高原因及清理方案咨询
GitLab.com制品存储占用过高问题排查与解决
核心问题原因
是,之前近一年勾选「Keep artifacts from most recent successful jobs」选项是导致存储占用过高的关键原因。这个选项会强制保留所有成功作业的制品,直接覆盖你设置的24小时过期规则——哪怕你定义了过期时间,只要开启这个选项,成功作业的制品就会被永久留存(直到手动删除)。一年下来,哪怕每天15条成功流水线,每条留存少量制品,积累起来也会达到4.5GB的规模。
手动浏览并删除制品的方法(GitLab.com)
你可以直接在Web界面操作,步骤如下:
- 进入目标项目,点击左侧导航栏的 CI/CD > 制品:这里会展示所有当前留存的制品条目,包含作业状态、创建时间、制品大小等信息。你可以按「创建日期」倒序筛选,批量删除早期的成功作业制品。
- 若需要更精准筛选,进入 CI/CD > 流水线,点击页面顶部的「筛选」按钮,选择「状态: 成功」,找到目标流水线后进入详情页,点击对应作业的「制品」标签,再点击「删除制品」按钮即可。
关于API操作的补充建议
如果之前的API脚本未生效,可能是以下原因:
- 权限不足:确保调用API的账号拥有项目维护者及以上权限。
- 筛选范围不全:可以调整API参数,专门定位被保留的成功作业制品。示例命令(需替换
PROJECT_ID和PRIVATE_TOKEN):# 获取所有带制品的成功作业ID curl --header "PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN" "https://gitlab.com/api/v4/projects/PROJECT_ID/jobs?scope=success&artifacts=true" | jq '.[] | .id' # 遍历删除每个作业的制品 for job_id in $(curl --header "PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN" "https://gitlab.com/api/v4/projects/PROJECT_ID/jobs?scope=success&artifacts=true" | jq -r '.[] | .id'); do curl --request DELETE --header "PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN" "https://gitlab.com/api/v4/projects/PROJECT_ID/jobs/$job_id/artifacts" done
后续预防
现在你已经取消了「Keep artifacts from most recent successful jobs」选项,新的成功作业制品会按照24小时过期规则自动清理,不会再出现大规模积累的问题。
内容的提问来源于stack exchange,提问作者rileys
相关产品推荐
相关产品推荐

