如何清理 Jenkins 历史构建记录释放磁盘空间

文章导读
清理 Jenkins 历史构建记录最直接的方式是通过任务配置开启“丢弃旧的构建”功能,或在服务器端使用脚本删除 `$JENKINS_HOME/jobs/` 下的旧构建目录。此方案适用于磁盘空间告急或长期未维护的 Jenkins 实例,操作前务必备份数据并确认不再需要被清理的构建产物和日志。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

清理 Jenkins 历史构建记录最直接的方式是通过任务配置开启“丢弃旧的构建”功能,或在服务器端使用脚本删除 `$JENKINS_HOME/jobs/` 下的旧构建目录。此方案适用于磁盘空间告急或长期未维护的 Jenkins 实例,操作前务必备份数据并确认不再需要被清理的构建产物和日志。

先说结论:优先通过 Jenkins 界面配置保留策略,紧急情况下再使用服务器命令行清理。

  • 适合:磁盘空间不足、构建历史过多导致性能下降的场景
  • 先准备:确认 Jenkins 进程权限、备份重要构建产物、停止相关任务
  • 验收:磁盘占用明显下降且新构建任务能正常生成日志

命令速用版

以下命令需在 Jenkins 服务器终端执行,请替换 $JENKINS_HOME 为实际路径。

# 1. 诊断磁盘占用最大的目录
cd $JENKINS_HOME
du -sh * | sort -rh | head -10

# 2. 紧急清理 7 天前的构建历史(保留目录结构)
find . -path "*/builds/*" -type d -mtime +7 -exec rm -rf {} \;

# 3. 删除超大日志文件(例如大于 100M)
find . -type f -name "*.log" -size +100M -exec rm -f {} \;

为什么会这样

构建历史是 Jenkins 最占存储空间的组成部分,包含日志、制品和元数据。

Jenkins 每次构建都会在 `$JENKINS_HOME/jobs/[Job 名称]/builds/` 目录下生成以构建编号命名的文件夹。随着项目增多和构建频率加快,这些文件夹内的日志文件和构建产物会快速累积。公开资料中有案例显示,单个复杂项目的构建产物可能达到 GB 级别,长期不清理会导致磁盘空间耗尽,进而引发构建失败或服务响应缓慢。

如何清理 Jenkins 历史构建记录释放磁盘空间

分步处理

1. 定位空间占用根源

使用 ncdudu 命令可视化分析磁盘占用,确认 jobs/ 目录是否为主要占用者。

2. 配置自动丢弃策略(推荐)

进入 Jenkins 任务配置页面,找到“丢弃旧的构建”选项。设置“保持构建的天数”或“保持构建的最大个数”,例如保留最近 10 次构建。此配置会在后续构建中自动清理旧数据,无需人工干预。

3. 脚本批量清理(高级)

对于已积累的历史数据,可使用 Jenkins Script Console 执行 Groovy 脚本批量删除。指定任务名称和最大保留编号,脚本会遍历构建记录并删除编号小于设定值的历史。

如何清理 Jenkins 历史构建记录释放磁盘空间

怎么验证是否生效

执行 df -h 查看磁盘可用空间是否增加。登录 Jenkins 界面,进入对应任务页面,确认构建历史列表只保留了设定次数内的记录。尝试触发一次新构建,检查是否能正常生成日志且无权限报错。

常见坑

  • 权限问题:命令行删除文件时,需确保执行用户与 Jenkins 运行用户一致,避免产生权限冲突导致后续构建失败。
  • 误删重要产物:暴力删除 builds 目录可能误删需要审计或回滚的特定版本制品,操作前务必确认保留策略。
  • Docker 空间混淆:若 Jenkins 运行在容器中,磁盘满可能是 Docker 镜像或容器日志占用,需区分 Jenkins 数据卷与 Docker 系统占用。

常见问题

配置丢弃策略后立即生效吗?

配置保存后不会立即删除旧构建,通常在下次构建触发时或系统后台任务运行时执行清理。

删除构建日志会影响正在运行的任务吗?

不会影响正在运行的任务,但不应删除当前正在构建的编号目录,否则会导致构建状态丢失。

清理后空间没有释放怎么办?

检查是否有文件被进程占用未释放,或确认是否清理了 Docker 容器内的无用资源。

参考来源

  • Jenkins 持续集成部署 - 清理历史构建记录,释放服务器空间
  • Jenkins 磁盘爆满?3 个高效清理技巧拯救你的 CI/CD 服务器
  • Jenkins 构建历史太多怎么办?手把手教你用 Slicing 插件批量清理 (避坑指南)
  • Jenkins 磁盘爆满?3 种高效清理方案帮你省下 80% 空间 (附详细步骤)
  • 高效管理 Jenkins 存储:构建历史与工作空间清理实战
  • Jenkins 服务器报磁盘空间不足的问题解决方案
  • 解决 Jenkins 运行时磁盘满的问题
  • Jenkins 服务器磁盘空间管理策略
  • Jenkins 垃圾清理指南