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服务的稳定。

Jenkins构建时报错:No Space left on device的更多相关文章

  1. jenkins构建时报错

    配置好项目后,选择立即构建,报错 由于节点管理配置的太低,或者在节点的用法上 选择了不同的方式 解决办法: 1.尽可能的使用这个节点 2.保证配置过程没有错误.

  2. 【Devops】【docker】【CI/CD】Jenkins源码管理,设置gitlab上项目的clone地址 + jenkins构建报错:Please make sure you have the correct access rights and the repository exists.

    注意,如果 jenkins构建报错:Please make sure you have the correct access rights and the repository exists. 而此时 ...

  3. Jenkins构建报错(Jenkins is reserved for jobs with matching label expression)解决办法

    Jenkins构建报错Jenkins is reserved for jobs with matching label expression 原因节点配置导致 修改配置

  4. 四十三、jenkins启动时报错:consider increasing the maximum size of the cache. After eviction approximately [10,239] KB of data

    jenkins启动时报错: consider increasing the maximum size of the cache. After eviction approximately [10,23 ...

  5. apache无法启动报错No space left on device

    apache无法启动报错No space left on device 故障现象:apache无法启动ipcs信号量很多 # service httpd startStarting httpd : [ ...

  6. 【Devops】【docker】【CI/CD】jenkins源码管理,添加SSH地址后报错+Jenkins构建报错:Please make sure you have the correct access rights and the repository exists.

    jenkins源码管理,添加SSH地址后报错: Could not read from remote repository. Please make sure you have the correct ...

  7. Jenkins启动时报错:java.net.BindException: Address already in use: bind 解决方法

    下载jenkins.war包后,进入Jenkins.war包目录下,运行java -jar jenkins.war时报端口被占用的错误:java.net.BindException: Address ...

  8. jenkins构建报错 Error fetching remote repo 'origin'

    ERROR: Error fetching remote repo 'origin' Finished: FAILURE // 原因如下 原因一:可能是配置的git分支的权限问题,检查一下配置里面的源 ...

  9. unzip失败,unzip:报错End-of-central-directory signature not found、scp:报错no space left on device

    文章目录 问题 解决 拓展 问题 通过rz命令传本地文件到本地服务器,失败. 通过scp命令尝试报错: no space left on device 意思是目的机器内存不够用了,但是传过去了,但是没 ...

随机推荐

  1. 【线段树区间合并】HDU1540-Tunnel Warfare

    一.题目 Description During the War of Resistance Against Japan, tunnel warfare was carried out extensiv ...

  2. Ubuntu-server14.04搭建LAMP环境

    转自:http://www.cnblogs.com/myzhibie/p/4330327.html 对于很多PHP初学开发者来讲,搭建一个可用于生产的LAMP环境是一件费时费力的事情,本文以 ubun ...

  3. Python中的join()函数的用法

    函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下:    join():    连接字符串数组.将字符串.元组.列表中的元素以指定的字 ...

  4. less简单用法

    http://less.bootcss.comless工具:koala工具url:http://koala-app.com/index-zh.html// less import: // less 文 ...

  5. Sprint第三阶段(第四天12.12)

  6. 剑指offer五:

    输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. /* public class ListNode { int val; ListNode next = n ...

  7. SPOJ 375 Query on a tree 树链剖分模板

    第一次写树剖~ #include<iostream> #include<cstring> #include<cstdio> #define L(u) u<&l ...

  8. 远程连接redis

    1.在ubuntu上的redis作为服务端,默认是打开的 在redis的配置文件redis.conf中,找到bind localhost注释掉. 注释掉本机,局域网内的所有计算机都能访问. bind ...

  9. 导出excel用ajax不行,提交form表单可以

    导出excel用ajax不行,提交form表单可以. 一直用ajax找原因,网页不出现下载提示框 写了 response.setContentType("application/binary ...

  10. guardian keytab生成不了

    vim /var/kerberos/krb5kdc/kadm5.acl 将*e改成* /etc/init.d/kadmin restart 重启kadmin