Jenkins构建历史管理指南
Jenkins中每个Job的构建历史默认存储在$JENKINS_HOME/jobs/<JOB_NAME>/builds/目录下(Linux系统$JENKINS_HOME通常为/var/lib/jenkins或~/.jenkins;Windows系统为C:\Program Files (x86)\Jenkins或用户自定义路径)。该目录下的每个子目录对应一次构建,包含日志、归档制品、状态文件等信息。
这是Jenkins官方推荐的核心清理方式,可在Job级别实现时间/数量的双重控制,避免手动逐个删除。
配置步骤:
Days to keep builds(如保留30天内的构建);Max # of builds to keep(如最多保留50个构建);Days to keep artifacts(保留制品天数)和Max # of artifacts to keep(保留制品数量),避免制品占用过多空间。进阶用法:通过Groovy脚本定义全局默认策略(适用于所有新Job),或在Pipeline中通过options块设置(覆盖全局配置):
// 全局配置(Manage Jenkins → Configure System → Global Job Defaults)
properties([
buildDiscarder(logRotator(daysToKeepStr: '7', numToKeepStr: '10'))
])
// Pipeline脚本(声明式)
pipeline {
agent any
options {
buildDiscarder(logRotator(numToKeepStr: '20')) // 保留最近20个构建
}
stages { /* ... */ }
}
若需批量清理特定Job或所有Job的旧构建,可通过Jenkins“系统管理→脚本命令行”执行Groovy脚本:
def jobName = "your-job-name"
Jenkins.instance.getItemByFullName(jobName).builds.findAll { it.number <= 10 }.each { it.delete() }
Jenkins.instance.items.findAll { it instanceof hudson.model.FreeStyleProject || it instanceof hudson.model.PipelineJob }.each { job ->
job.builds.findAll { it.number <= 30 }.each { it.delete() }
}
执行后无需重启Jenkins,脚本会自动同步更新构建历史。
若直接删除Job但未清理其工作空间,会导致磁盘空间浪费。可通过以下Python脚本(需安装jenkinsapi库)遍历节点工作空间,删除无对应Job的目录:
import os
import shutil
from jenkinsapi.jenkins import Jenkins
jenkins_url = "http://your-jenkins-server"
jenkins_user = "username"
jenkins_pass = "password"
workspace_path = "/var/lib/jenkins/workspace/"
jenkins = Jenkins(jenkins_url, username=jenkins_user, password=jenkins_pass)
for dirpath, dirnames, _ in os.walk(workspace_path):
for dirname in dirnames:
job_path = os.path.join(dirpath, dirname)
if not jenkins.has_job(dirname): # 若Job不存在
print(f"Deleting workspace for deleted job: {job_path}")
shutil.rmtree(job_path)
提供可视化界面管理构建历史,支持:
用于解析构建日志,标记错误/警告信息,帮助快速定位问题构建。结合“Discard old builds”配置,可优先保留包含关键错误的构建,避免重要信息丢失。
archiveArtifacts步骤归档至Jenkins Master或外部存储(如S3、NFS),而非依赖Job的builds目录。$JENKINS_HOME目录(尤其是jobs/子目录),避免误删导致历史数据丢失。免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。