Jenkins 是一个自动化构建工具,用于持续集成和持续部署。在 Jenkins 运行过程中,可能会产生大量的构建数据和临时文件,导致磁盘空间被占满。为了避免这种情况,可以采用以下方法清理 Jenkins 的磁盘空间。
使用 Jenkins 插件进行清理(有点麻烦)
安装并使用 Workspace Cleanup Plugin 插件。这个插件可以在每次构建完成后自动清理工作空间,删除不需要的文件。
安装插件后,在构建任务中添加一个 "Post-build Action",选择 "Clean workspace"。可以设置清理策略,例如保留最近的 n 个构建,或者在构建完成后立即清理。
定期删除旧的构建历史
在 Jenkins 的系统设置中,可以为每个项目设置保留构建历史的时间。例如,可以设置仅保留最近 30 天的构建历史。这样可以避免磁盘被过多的旧构建数据占用。
要设置保留构建历史的时间,进入项目的配置页面,在 "Discard old builds" 选项中设置 "Max # of builds to keep" 和 "Max days to keep builds"。
手动清理磁盘空间
如果需要立即清理磁盘空间,可以手动删除 Jenkins 工作空间中的不需要的文件。通常,Jenkins 的工作空间位于 $JENKINS_HOME/workspace 目录下。可以定期检查这个目录,并删除不需要的构建数据和临时文件。
使用脚本进行清理
可以编写一个脚本,定期检查并删除 Jenkins 工作空间中的旧文件。例如,可以使用以下 shell 脚本清理 30 天前的构建数据:
find $JENKINS_HOME/workspace -type f -mtime +30 -exec rm -f {} \\;
将此脚本添加到定时任务 (例如使用 cron),以定期执行清理操作。
这个命令是用来删除Jenkins工作目录下所有修改时间早于30天的文件。下面对这个命令的各个部分进行解释:
find: 用于查找符合指定条件的文件或目录。$JENKINS_HOME/workspace: 工作目录的路径。$JENKINS_HOME是一个指向Jenkins主目录的环境变量,而workspace是存储每个任务工作区的目录。type f: 指定只查找文件,不查找目录。mtime +30: 指定只查找修改时间早于30天的文件。+30表示“早于30天”。exec rm -f {} \\;: 对每个符合条件的文件执行rm -f命令,强制删除文件而不需要确认。{}是一个占位符,表示找到的文件名,\\;表示命令结束。这个命令可以用来清理Jenkins工作目录中旧的构建产物或日志文件,以释放磁盘空间。不过,使用这个命令需要谨慎,因为它会永久删除文件而不需要确认。建议在对所有文件执行删除操作之前,先在一个小范围内测试命令的效果。
1.保留构建次数7天5个
全局设置
可能需要通过Workspace Cleanup Plugin使用
2.定时清理
find $JENKINS_HOME/workspace -type f -mtime +30 -exec rm -f {} \\;
core Job
在Jenkins Pipeline中,你可以使用deleteDir()函数来清理构建产生的临时文件和目录。deleteDir()函数会删除当前工作目录下的所有文件和目录,包括子目录。
以下是在Jenkins Pipeline中清理构建的步骤:
deleteDir()函数来清理构建产生的临时文件和目录。例如:pipeline {
agent any
stages {
stage('Build') {
steps {
// 构建步骤
}
}
stage('Cleanup') {
steps {
deleteDir()
}
}
}
}