- 随着Jenkins上配置的任务(job)越来越多,每个任务构建(build)次数的日积月累,Jenkins服务器会出现磁盘告警无法继续构建任务的问题。
- Jenkins占用空间最多的主要是3个路径, jobs、workspace、overlay2
- jobs
- Jenkins上创建的每一个任务,服务器都会为你在master的jobs路径下创建一个目录,以任务的名称来命名。
- 不管你的任务配置成在master或者slave上运行,这个目录都是创建在master服务器上的。
- 每个任务的jobs目录下,会保存任务的配置信息、下一次构建的序号、上一个成功构建的序号、失败构建的序号、builds目录,以及会保存每次构建的jar包(/var/jenkins_home/jobs/项目名/modules),可以通过配置丢弃自动构建解决。
- 任务的每次构建,都会在builds目录下生成一个构建的目录,里边存放的是本次构建的参数、日志(在Jenkins上可以看到的console output)、以及任务配置的各个执行步骤、插件的相关内容。
- 这个路径比较常见的问题是:日积月累后,构建次数太多,每次构建的历史都保存,必然有一天会占满磁盘空间。 此类问题,解决的方法是在Jenkins任务下配置 “丢弃旧的构建”,这样每次构建后,Jenkins会根据配置信息,自动删除旧构建的build目录。
- 建议保留构建的个数或时效结合实际需要,不要设置过大。
- 解决方法
- 在每个流水线中设置保持构建的天数和保持构建的最大个数
- workspace
- 每一个在Jenkins master服务器上运行的任务,都会在workspace下生成一个工作目录。注意这里与jobs不同,任务在master或者哪个slave上运行,这个工作目录就在对应的服务器上。
- 如名称所示,这是任务构建的工作目录,包含的内容可能会比较多:如maven项目checkout出来的代码,编译打包产生的文件;构建步骤中执行脚本产出的日志、测试报告等(可以配置)
- 值得注意的是,即使配置了“丢弃旧的构建”,Jenkins也不会为你自动删除workspace下的内容,所以如果你的任务每次都会在workspace下生成日志、报告、其他文件的话,需要自行处理:可以在每次执行构建任务时删除之前的内容,或配置定时任务用于删除旧的文件。
- 解决方法
- 可以在每次执行构建任务时删除之前的内容,或配置定时任务用于删除旧的文件。
- 如果流水线采用docker-slave动态节点的机制,任务执行完后,会自动清除workspace
- overlay2
- overlay 分区是 Docker 的虚拟文件系统,无论是build的镜像还是pull的镜像都会保存在该文件目录下,都没有删除导致磁盘占用过高
?
|