运维
磁盘清理
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
目录下。可以定期检查这个目录,并删除不需要的构建数据和临时文件。- 使用脚本进行清理
find
: 用于查找符合指定条件的文件或目录。$JENKINS_HOME/workspace
: 工作目录的路径。$JENKINS_HOME
是一个指向Jenkins主目录的环境变量,而workspace
是存储每个任务工作区的目录。type f
: 指定只查找文件,不查找目录。mtime +30
: 指定只查找修改时间早于30天的文件。+30
表示“早于30天”。exec rm -f {} \;
: 对每个符合条件的文件执行rm -f
命令,强制删除文件而不需要确认。{}
是一个占位符,表示找到的文件名,\;
表示命令结束。
可以编写一个脚本,定期检查并删除 Jenkins 工作空间中的旧文件。例如,可以使用以下 shell 脚本清理 30 天前的构建数据:
将此脚本添加到定时任务 (例如使用
cron
),以定期执行清理操作。这个命令是用来删除Jenkins工作目录下所有修改时间早于30天的文件。下面对这个命令的各个部分进行解释:
这个命令可以用来清理Jenkins工作目录中旧的构建产物或日志文件,以释放磁盘空间。不过,使用这个命令需要谨慎,因为它会永久删除文件而不需要确认。建议在对所有文件执行删除操作之前,先在一个小范围内测试命令的效果。
生产使用
1.保留构建次数7天5个
全局设置
可能需要通过Workspace Cleanup Plugin使用
2.定时清理
jenkins piepline 清理构建(不推荐)
在Jenkins Pipeline中,你可以使用
deleteDir()
函数来清理构建产生的临时文件和目录。deleteDir()
函数会删除当前工作目录下的所有文件和目录,包括子目录。以下是在Jenkins Pipeline中清理构建的步骤:
- 在Jenkins Pipeline的脚本中,添加
deleteDir()
函数来清理构建产生的临时文件和目录。例如:
- 运行Jenkins Pipeline,等待构建完成。
- 检查构建产生的文件和目录是否已被删除。
注意,使用
deleteDir()
函数会删除构建产生的所有文件和目录,包括构建产生的输出文件。如果你需要保留一些构建产生的文件或目录,可以在deleteDir()
函数之前添加必要的文件或目录复制操作,或者使用其他Jenkins插件来进行构建产物的保留和清理。不允许并发构建Abort previous builds
"Abort previous builds" 是针对当前项目的。这个选项只会影响到当前 Jenkins 作业 (job),在这个作业中,如果这个选项被启用,那么当一个构建正在运行时,如果触发了另一个构建,那么当前运行的构建会被中断并取消,以确保在任何时候只有一个构建在运行。
如果你在多个 Jenkins 作业中需要控制并发构建,你需要分别设置每个作业的并发构建选项。这样可以确保每个作业在任何时候只有一个构建在运行。
需要注意的是,如果你在使用 Jenkins 的分布式构建功能,并且在多个节点上运行同一个作业,那么每个节点上都将独立地执行并发构建选项。也就是说,如果在同一节点上运行的两个构建之间启动了第三个构建,则只有该节点上运行的两个构建会相互干扰。另一方面,不同节点上运行的构建之间不受并发构建选项的影响。
Loading...