Jenkins开启丢弃旧的构建?你可要小心啊!
玩Devops的小伙伴应该对Jenkins都有了解。
Github上16.8k的Star的项目,1500+的构建、发布等自动化插件可供选择,事实上的业界CICD标准领导者。
JFrog、Coding等一众你能见到的企业级的Devops解决方案基本上都是用Jenkins做引擎。
产研流水线用Jenkins可以说真的很香。但是前几天它突然不听话了,它也有不香的时候,手动裂开。
前几天在做一个jenkins job的迁移,由于是第一次搞,在迁移的过程中遇到了小意外,出了点小插曲。

起因是在迁移的过程中发现一个历史的ci的pipeline job对应build目录特别大,执行下面的命令压缩备份起来异常耗时,等的花儿都谢了。
# tar -czvf a-jobs-bak.tar.gz a-jobs
熟悉jenkins的同学都应该知道build目录是用来存放job的历史构建记录的,于是进去之后执行下面的命令发现有近 N w个历史构建记录的文件夹没删除。
# ls | wc -l
所以就到job的配置页面查看job的配置,发现该job并没有配置丢弃旧的构建
的策略。
然后愉快的给该job配置了一个丢弃旧的构建
的策略
本以为万事大吉,静静的等着jenkins清理历史构建记录即可,不想一会儿,就有不少同事反馈构建的流水线响应缓慢,有不少超时。
于是赶紧在浏览器中访问jenkins,这个时候发现jenkins页面加载已经异常缓慢,基本上已经打不开了。
没有多想,第一反应就是刚配置的丢弃旧的构建
策略生效后由于文件过多,整个jenkins都在删文件导致的,所以就赶紧重启jenkins。
# systemctl restart jenkins
起来之后发现,浏览器中可以访问jenkis,但是依然比较缓慢,这个时候感觉上面配置的丢弃旧的构建
的策略依然在起作用,服务器依然在忙于删文件。
然后就立即删除上面给这个job配置的丢弃旧的构建
的策略,紧接着再次重启jenkins服务,服务起来后没有再次出现响应缓慢卡顿的现象,同事们反馈所有研发的流水线恢复正常,问题得到解决。
这里要说明的是设置丢弃旧的构建
策略在提交之后并不会立即生效,而是在有新的任务进来并且执行完成之后才会触发。
由于上面操作的是生产的ci,所有研发人员的构建部署事件都会通过中间件向上面提交,配置的丢弃旧的构建
的策略提交之后立马会有任务进来。
这个时候就触发了丢弃旧的构建
的执行,于是jenkins就开始忙于删除数以万计的文件,然后就出现了上文中所述的问题。
总结一下本次得到的教训就是在正常的jenkins服务时间内一定要谨慎的设置或者修改job的的丢弃旧的构建
策略来让jenkins去主动去删除大量的历史构建记录,这会是个灾难,会引起你的服务不可用。
所以我们在给有需要job配置丢弃旧的构建
策略之前一定要先确定下服务器上历史构建记录的数量。
如果该job下历史构建记录较多,达到了以万计,建议你选择在正常的jenkins服务时间内手动分批删除,或者在服务使用量低峰或者服务维护时间进行删除操作。
如果需要删除的文件数较少,你可以通过设置或者修改job的丢弃旧的构建
策略等待jenkins自动删除。
更推荐的做法是在job创建之初就给job配置丢弃旧的构建
策略并且指定保持构建的最大次数
为一个较小的值。

Jenkins开启丢弃旧的构建?你可要小心啊!的更多相关文章
- 关于jenkins旧的构建导致磁盘空间不足问题
简述: Jenkins在每一次的执行构建后,都会对该构建的项目生成一个历史构建记录以及生成一份历史构建的项目发布包,长期累积可能会占用大量磁盘空间 jenkins构建jobs路径如下图: 解决办法: ...
- jenkins学习之自动打包构建nodejs应用
上一节记录了下jenkins在centos下的安装,这节继续,说下怎么使用jenkins和nodejs进行自动打包更新服务. 创建任务 创建任务比较简单,这里我们创建自由风格项目: General信息 ...
- 利用Jenkins自动部署工具间接构建kettle的调度平台
关于Jenkins的介绍我就不说了,自己百度,因为这个工具调用脚本只是他的功能的冰山一角,其他功能我也不能理解,因为不是那个领域. 下面我就介绍一下为什么我们需要一个调度平台,以及学习完 ...
- Jenkins 开启用户注册机制及用户权限设置
Jenkins 开启用户注册机制及用户权限设置 by:授客 QQ:1033553122 步骤 1. 系统管理-Configure Global Security 2. 设置
- Linux CentOS7下svn+tomcat9.0+maven3.3+jenkins实现web项目自动构建与远程发布
CentOS7下svn+tomcat9.0+maven3.3+jenkins实现web项目自动构建与远程发布 by:授客 QQ:1033553122 目录 一. 实践环境. 1 二. 安装 ...
- Jenkins系列之-—06 Ant构建
一.Ant 简介&构建环境 Apache Ant 是由 Java 语言开发的工具 构建ant环境: 1). 安装jdk,设置JAVA_HOME ,PATH ,CLASS_PATH 2). 下载 ...
- 【06】Jenkins:Gitlab 自动触发构建以及钉钉通知
写在前面的话 在某些时候,我们希望能够实现这样一个功能,当用户提交东西到 gitlab 上的时候,希望它能够自动触发构建,发布到我们需要的环境. 目前我们内部有做类似的需求:产品提交原型到 gitla ...
- jenkins实现手动选择分支构建项目-Git Paramater
先下载插件: Git Paramater 参照: jenkins-参数化构建(三)插件:Git Parameter https://www.cnblogs.com/zhaojingyu/p/98624 ...
- jenkins在windows平台自动化构建代码
jenkins服务端:centos6.8 客户端:windows server2012 windows10 工具:cwRsync 注:复制为jenkins工作目录到网站目录,无需服务端. 1.安装je ...
随机推荐
- Redis缓存篇(二)淘汰机制:缓存满了怎么办?
上一讲提到,缓存的容量总是小于后端数据库的.随着业务系统的使用,缓存数据会撑满内存空间,该怎么处理呢? 本节我们来学习内存淘汰机制.在Redis 4.0之前有6种内存淘汰策略,之后又增加2种,一共8种 ...
- VsCode配置Go语言插件
前言 宇宙第一IDE对于笔记本来说还是太过沉重了 VsCode虽然差了点但是胜在插件多且够轻量 VsCode的安装/汉化参考我之前的博客 https://www.cnblogs.com/chnmig/ ...
- 【SpringBoot1.x】SpringBoot1.x 分布式
SpringBoot1.x 分布式 分布式应用 Zookeeper&Dubbo ZooKeeper 是用于分布式应用程序的高性能协调服务.它在一个简单的界面中公开了常见的服务,例如命名,配置管 ...
- 【Java基础】常用类
常用类 字符串相关的类 String类:代表字符串,使用一对 "" 引起来表示. public final class String implements java.io.Seri ...
- 【SpringMVC】SpringMVC 拦截器
SpringMVC 拦截器 文章源码 拦截器的作用 SpringMVC 的处理器拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理. 谈到拦截器,还有另外一个概 ...
- 【Spring】Spring 事务控制
Spring 事务控制 Spring 事务控制介绍 JavaEE 体系进行分层开发,事务控制位于业务层,Spring 提供了分层设计业务层的事务处理解决方案. Spring 的事务控制都是基于 AOP ...
- 剑指offer 面试题10.2:青蛙变态跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 编程思想 因为n级台阶,第一步有n种跳法:跳1级.跳2级.到跳n级跳1级,剩下 ...
- Restful API是什么、为什么、怎么使用
Restful API 文章目录 Restful API 1.REST是什么以及它的 6 个限制 REST是什么? REST的6个限制 2. Restful是什么 Restful是什么 RESTful ...
- ctfhub技能树—信息泄露—git泄露—index
打开靶机 查看页面信息 使用dirsearch进行扫描 使用githack工具处理git泄露情况 使用git log命令查看历史记录 与 add flag 9b5b58-- 这次提交进行比对 即可拿到 ...
- kafka(一)入门
一.消息引擎系统 这类系统引以为豪的消息传递属性,像引擎一样,具备某种能量转换传输的能力 消息引擎系统是一组规范,企业利用这组规范在不同系统之间传递语义准确的消息,实现松耦合的异步式数据传递.通俗地讲 ...