数据保留与清理

平台运行一段时间后,事件、通知投递、Worker 任务轨迹和构建部署日志会持续增长。平台管理员可以在 站点设置 > 数据保留 中设置自动保留天数,也可以预览并清理指定时间段的数据。

自动保留

Worker 每 24 小时独立运行一次数据保留任务。每类数据可以分别设置保留天数:

数据默认保留时间清理边界
平台事件90 天按事件发生时间清理
通知投递90 天只清理成功或失败的终态投递
Worker 任务事件30 天清理历史任务轨迹
构建日志30 天只清理已结束构建的日志,保留构建记录
发布日志90 天只清理已结束发布的日志,保留发布与回滚记录
Hook 日志90 天只清理已结束 Hook 的日志,保留运行结果
过期认证数据30 天只清理已经过期的会话、记住登录令牌和二次验证断言

设置为 0 会停用该类数据的自动清理。修改设置只影响之后运行的清理任务,不会立即删除数据。

自动清理使用固定数据目录和小批次删除。构建、发布或 Hook 仍在运行时,其日志不会被清理;有效会话也不会因为管理员选择了未来时间而被提前删除。

手动清理

只有平台管理员可以使用手动清理。启用平台二次验证策略后,执行清理前还需要完成一次对应的 Step-up MFA 验证:

  1. 选择一个或多个数据类型。
  2. 选择开始和结束时间。时间范围按 [开始时间, 结束时间) 计算。
  3. 先执行预览,确认每类数据的匹配数量。
  4. 在二次确认对话框中执行清理。

预览不会修改数据库。修改数据类型或时间范围后,之前的预览会失效,必须重新预览。实际清理结果会写入审计日志,但不会把被清理的日志正文写入审计记录。

不在清理范围内的数据

以下数据不会出现在数据保留目录中,也不能通过手动清理接口删除:

  • 审计日志;
  • 计费用量、钱包和不可变账本;
  • 构建记录、构建任务元数据和镜像记录;
  • 发布记录、revision 和回滚关系;
  • Hook 运行结果与脚本快照;
  • Secret、Token、镜像凭据和身份源配置;
  • Kubernetes PVC 和应用运行数据。

日志清理后,构建和发布列表仍然存在,但过期日志正文将不再可查看。需要长期留存日志时,应先接入外部日志系统或归档存储。

多副本与故障处理

自动清理由 Asynq 的周期任务触发,每个已经入队的任务只会由一个 Worker 消费。多副本意外重复触发也不会扩大清理范围:每次删除按固定批次执行,中途失败时已完成批次不会回滚,下一次运行会从剩余数据继续。