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

如何在自托管Gitlab中自动清理旧artifacts解决存储空间不足问题

方案1:启用Gitlab内置过期Artifacts清理任务

你在管理后台配置的过期规则未自动触发物理删除,是因为对应后台清理任务的默认执行频率较低,可通过以下配置调整:

  • 先手动验证清理逻辑是否正常,执行命令:gitlab-rake gitlab:cleanup:expired_artifacts,该命令会自动扫描所有已标记为过期的artifacts,直接清理对应的磁盘文件,不会误删未过期资源
  • 调整自动执行频率:打开Gitlab主配置文件/etc/gitlab/gitlab.rb,修改如下配置项(示例为每2小时执行一次,可根据业务需求调整间隔):
gitlab_rails['expire_build_artifacts_worker_cron'] = "0 */2 * * *"
  • 修改完成后执行gitlab-ctl reconfigure即可生效,该方案完全适配Gitlab自身的过期规则,无需维护额外路径,风险更低。
方案2:自定义定时脚本清理(适配自定义清理规则场景)

如果你需要额外清理超过特定期限的artifacts(比如你需求的7天阈值),可以通过定时脚本实现:

  • 首先确认你的artifacts存储路径,默认路径为/var/opt/gitlab/gitlab-rails/shared/artifacts,如果你手动修改过存储路径,替换为实际路径即可
  • 编写清理脚本,比如存为/opt/scripts/clean_old_artifacts.sh,内容如下:
#!/bin/bash
# 先清理磁盘上创建时间超过7天的artifacts目录
find /var/opt/gitlab/gitlab-rails/shared/artifacts -type d -ctime +7 -exec rm -rf {} \;
# 同步清理Gitlab数据库中已被物理删除的artifacts元数据,避免页面残留无效记录
gitlab-rake gitlab:cleanup:orphan_artifacts
  • 给脚本添加执行权限:chmod +x /opt/scripts/clean_old_artifacts.sh
  • 配置定时执行规则,执行crontab -e添加如下配置(示例为每天凌晨2点执行,避开业务高峰):
0 2 * * * /opt/scripts/clean_old_artifacts.sh >> /var/log/clean_old_artifacts.log 2>&1

注意:首次执行脚本前建议先将rm -rf替换为ls,验证输出的待清理目录符合预期后再替换为删除命令,避免误删业务资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:24:02