Jenkins在自动化构建服务的同时也在消耗服务器的磁盘空间,如果构建的项目个数很多,而Jenkins 服务器磁盘空间又不是非常大的话,每隔一段时间磁盘空间就会爆满导致,就会出现磁盘空间不足无法构建的后果。这时候就需要进行一定的手工干预才能恢复Jenkins的正常运作。
解决方案:
1.执行命令:df
查看哪个挂载点满了
2.执行命令:du -sh /* | sort -nr
查看哪个目录占用空间最大(逐层查看,可以定位出哪个目录最大)
最后定位到 /usr/tomcat/tomcat-jenkins/webapps/jenkins/jobs/modules占据空间最大,将其内容清空后重新构建,成功。
其他解决方案:
本文基于Windows操作系统,结合Jenkins 的相关特性解决上述问题。
1.手工删除构建记录
这是最基本的一种操作方法,通过直接物理删除构建记录进行磁盘空间管理。手工删除构建记录方式如下:
(1).进入Jenkins根目录,Windows下默认位于当前用户目录中的.jenkins文件夹。
(2).手工删除构建记录,构建记录位于.jenkins\jobs\XXX\builds中(其中XXX为具体项目名称),以时间戳方式进行组织。根据需要直接删除对应的构建历史即可。
二、转移磁盘空间
转移磁盘空间的思路是通过改变Jenkins的默认主目录达到把构建记录转移到其他磁盘的方式。以Windows系统为例,通常用户目录所在的磁盘会安装很多软件导致磁盘空间处于不充裕的状态,而其他磁盘空间则可以进行动态划分和管理。如果能把Jenkins构建记录存放到相对较大而又可以动态管理的空间中无疑会在很大程度上解决磁盘空间不足的问题。具体操作方式也非常简单:
(1).创建Jenkins根目录环境变量JENKINS_HOME,将该环境变量映射到具体某个工作目录
(2).重启Jenkins即可
转移磁盘空间只是一种相对优化的策略,如果构建需求量非常巨大,该策略通常也是治标不治本,所以还有第三种策略。
3、自动丢弃构建历史数据
一次构建包含两方面的产物:构建记录和构建工件。构建记录是一种跟踪、分析和反馈的依据,具有保存价值;而已经过时的构建工件则通常可以直接丢弃。基于以上思路,Jenkins为我们提供了“丢弃旧的构建”配置功能,通过进行合理配置即可达到保存构建记录丢弃构建工件的效果,配置方式如下:
通过限制“发布包最大保留#个构建”就可以自动确保该项目对应的构建结果中只保存最近若干次的构建工件,从而优化磁盘空间的使用效率。
4、小结
通过上述三种策略,我们可以在实际工作中选择其中的一种或多种,确保Jenkins服务的稳定。