温馨提示×

Debian Jenkins怎样优化磁盘空间使用

小樊
42
2026-01-03 13:11:57
栏目: 云计算

Debian 上 Jenkins 磁盘空间优化实操

一 快速定位占用

  • 查看整体磁盘与分区使用:执行命令:df -h,确认哪个分区吃紧。
  • 定位 Jenkins 主目录:非容器可用 ps -ef | grep jenkins 查找 -DJENKINS_HOME=;容器可用 docker inspect jenkins | grep JENKINS_HOME
  • 分析目录占用:进入 $JENKINS_HOME 后执行 du -h -x --max-depth=1,优先关注 jobs/workspace/builds/ 等子目录。
  • 持续观测:在 Jenkins Web 界面查看构建历史与日志,或用 Prometheus 插件导出指标配合 Grafana 做容量预警。

二 清理与保留策略

  • 启用“丢弃旧的构建”(Discard Old Builds):在任务配置的 General 中勾选,并设置
    • Days to keep builds / Max # of builds to keep(保留天数与最大构建数)
    • 高级中的 Days to keep artifacts / Max # of builds to keep with artifacts(单独控制归档制品)
    • 建议值:日常保留 15(两周+1天);紧张时保留 3
  • 批量配置:安装 Configuration Slicing Plugin,在 Manage Jenkins → Configuration Slicing 中批量设置上述四项(注意:部分版本对 Pipeline 任务不生效,需要逐个调整)。
  • 立即释放空间(谨慎):在 $JENKINS_HOME/jobs//builds/ 下删除旧构建目录,例如
    • 删除 30 天前的构建:find [1-9] -type d -mtime +30 -exec rm -rf {} ;*
    • 删除构建号 1–7find [1-7] -type d -exec rm -rf {} ;
      删除后可在 Web 界面执行 Scan Workspace Now 或等待后台任务收敛。
  • 制品与日志:若仅需保留少量发布包,可将 Max # of builds to keep with artifacts 设为 1,并缩短 Days to keep artifacts

三 目录与存储布局优化

  • 迁移 JENKINS_HOME:将 JENKINS_HOME 指向大磁盘分区(如 /data/jenkins),可通过系统环境变量或启动器配置;修改后重启生效。
  • 分离工作空间与构建记录:在 系统管理 → 系统配置 → 高级 中分别设置 Workspace Root DirectoryBuild Record Root Directory,指向不同磁盘,避免单盘膨胀。
  • 构建过程产物流向:将 Maven localRepositoryGradle cache 等重目录迁移到大盘,并在 settings.xml 或构建环境里指向新路径,减少 $JENKINS_HOME 压力。
  • 容器场景:若使用 Docker,检查 /var/lib/docker(可用 docker info | egrep -i ‘root|storage’ 查看),定期清理无用镜像与层,避免与 JENKINS_HOME 争用同一磁盘。

四 自动化与长期维护

  • 建立例行清理:
    • Manage Jenkins → Script Console 定期执行清理脚本(如按时间/数量清理 builds)。
    • 使用 Prometheus + Grafana 监控 磁盘使用率、构建时长、队列长度,设置阈值告警。
  • 控制并发与频率:在 系统配置 中降低 # of executors 或按节点限流,减少并行构建导致的临时文件堆积。
  • 精简插件与依赖:停用不使用的插件,定期更新;减少插件自身日志与缓存开销。
  • 容量规划:结合历史增长与业务节奏,为 JENKINS_HOME 与工作空间预留充足余量,必要时横向扩容或冷热分层存储。

五 安全清理与回滚建议

  • 操作前:备份 $JENKINS_HOME(至少包含 jobs/config.xmlcredentials.xml 等关键目录与文件)。
  • 操作顺序:先停任务或节点 → 执行清理 → 在 Web 界面触发 Reload Configuration from Disk → 验证关键任务可构建与回放。
  • 制品归档:对需长期保留的发布包,迁移到制品仓库(如 Nexus/Artifactory)后再清理本地制品,避免误删影响发布。

0