Jenkins磁盘占用问题解决

随着Jenkins上配置的任务(job)越来越多,每个任务构建(build)次数的日积月累,Jenkins服务器很有可能出现磁盘告警无法继续构建任务的问题。这里分析一下可能的原因,并给出一些解决的tips

Jenkins占用空间最多的主要是2个路径, jobs和workspace

jobs

Jenkins上创建的每一个任务,服务器都会为你在master的jobs路径下创建一个目录,以任务的名称来命名。不管你的任务配置成在master或者slave上运行,这个目录都是创建在master服务器上的。每个任务的jobs目录下,会保存任务的配置信息、下一次构建的序号、上一个成功构建的序号、失败构建的序号,以及builds目录。任务的每次构建,都会在builds目录下生成一个构建的目录,里边存放的是本次构建的参数、日志(在Jenkins上可以看到的console output)、以及任务配置的各个执行步骤、插件的相关内容,例如:配置了publish HTML report的话,每次构建的report也都是在这个目录下的。

这个路径比较常见的问题是:日积月累后,构建次数太多,每次构建的历史都保存,必然有一天会占满磁盘空间。 此类问题,解决的方法是在Jenkins任务下配置 “丢弃旧的构建”,这样每次构建后,Jenkins会根据配置信息,自动删除旧构建的build目录。建议保留构建的个数或时效结合实际需要,不要设置过大。


但还可能存在的问题是:每次构建产生的build目录很大,即使保留较少次数的构建,仍然会占用较大空间。其中的一个原因是,HTML report占用空间过大。除了report本身就很大,必须要占用较多空间外,可以检查一下是否设置了不合理的html 生成方式、html文件路径等。下面举例:

当你设置了如上图所示的Publish HTML reports插件之后,每次构建完成后,插件会将 ./tv_py_test/lib 路径下的所有文件copy一份到builds的html_report目录下(每次构建都有一份)。如果配置的不合理,很有可能会出现 ./tv_py_test/lib路径下有很多内容,但实际的htmlreport只需要TestReport.html文件一个就够了,这样相当于每次构建,其他与测试报告无关的内容也占用了较多空间。 建议改善方法:HTML report相关的内容单独放在一个路径,此路径只保存与本次构建的报告相关的内容。

额外的提示:对于已经废弃的任务,建议及时在Jenkins上删除,Jenkins web页面上删除任务时,对应在jobs目录下的目录和文件也会被自动删除。

workspace

每一个在Jenkins master服务器上运行的任务,都会在workspace下生成一个工作目录。注意这里与jobs不同,任务在master或者哪个slave上运行,这个工作目录就在对应的服务器上。

如名称所示,这是任务构建的工作目录,包含的内容可能会比较多:如maven项目checkout出来的代码,编译打包产生的文件;构建步骤中执行脚本产出的日志、测试报告等(可以配置)

值得注意的是,即使配置了“丢弃旧的构建”,Jenkins也不会为你自动删除workspace下的内容,所以如果你的任务每次都会在workspace下生成日志、报告、其他文件的话,需要自行处理:可以在每次执行构建任务时删除之前的内容,或配置定时任务用于删除旧的文件。



你可能感兴趣的:(Jenkins,磁盘,持续集成)