Jenkins的构建编号和一个有趣的bug
什么是构建编号
jenkins每个job的每一次构建都有一个属于自己独立的构建编号,每一次的构建结果(成功或失败)所使用的编号都是不相同的。
正确的构建编号:每个job的每次构建结果使用不相同的构建编号

错误的构建编号:多个job的每次构建结果使用相同的构建编号

多个job相同的构建编号引起的bug
举例说明:
比如有A,B,C三个job,使用相同的构建编号
当A构建时,将构建编号由1011提升至1012。
而此时要构建B,则必须连续点击二次,才会出现响应。
原因:B的初始编号为1011,它需要比当前的最大+1,才可以被构建。构建编号的递增 1011->1012->1013
而如果要构建C,则必须连续点击三次,才会出现响应。
原因:C的初始编号为1011,它需要比当前的最大+1,才可以被构建。1011->1012->1013->1014
如果多个job的构建编号是相同的(共享同一个),当产生一个新的最大构建编号时,其它job就会出现连续多次点击都未响应。
它直到点击N多次将自己的构建编号累加到比最大的编号+1,这个job才可以被执行。
本次构建编号=上次编号+1
引发上面的bug 原因是多个job使用相同的构建编号。
那么我们是如何发现上面的计算公式的呢?
答案:从jenkins的运行日志中
打开 系统管理 – System Log(系统日志从java.util.logging捕获Jenkins相关的日志信息。) - 所有系统日志
用户的每一次操作,都有记录,可以从日志中发现上述公式
造成多个job构建编号相同的原因
上面的bug是否是jenkins自己引起的呢?
答案:否
打开jenkins的系统设置:
管理员身份登录 - 系统管理 - 系统设置 - 主目录 - 高级

jenkins的默认设置中,有一个主目录(workspace),并为每一个job和每一次的构建结果都提供了独立的目录
我原本是想修改默认的workspace(主目录),但错误地删除了jenkins为每一个job提供的独立目录(把工作空间根目录和构建记录根目录改成了固定值)
注意:主目录(workspace工作空间)是针对全局设置的,对于任何一个job还可以自定义工作空间,在后面的文章中,我会进行介绍。
每一次构建都产生了什么?
在jenkins中,每一次的构建记录都会被保留起来。
保存位置:默认保存在workspace/job name /构建编号/
每一次构建,都会创建一个以构建编号命令的文件夹
举例说明构建记录产生的文件
- log:保存着此次构建在Console中输出的日志
- build.xml:构建的信息,包括构建参数,构建结果,启动的用户名,启动时间戳
- changelog.xml:修改日志
所有job的根目录

单个Job的根目录

单个job的所有构建日志

单个job的单次构建记录

Jenkins的构建编号和一个有趣的bug的更多相关文章
- salesforce零基础学习(一百一十五)记一个有趣的bug
本篇参考:https://help.salesforce.com/s/articleView?language=en_US&type=1&id=000319486 page layou ...
- 【bug】记一个有趣的“bug”
产品经理在使用我们用户功能的是,需要查询一个用户,知道这个用户的id,我说支持模糊查询的. 他输入"余XX",点击查询,怎么都查不出这个用户. 我到用户表里确认,确实有这个ID的用 ...
- 一个有趣的BUG/按钮disabled之后还能触发click事件
一个很有意思的Bug 某天测试同学再次向我反馈,你这个删除按钮虽然置灰了,但是还是可以点击啊? 我:????(黑人问号) 卧槽?不可能啊,按钮都disabled了,怎么还可以点击?还能触发click事 ...
- jenkins:一个jenkins项目远程触发另一个jenkins项目构建配置
很多时候,我们会有这样的应用场景:一个jenkins上的项目构建后,需要远程触发另一台机子上的jenkins中某个项目的构建,可以通过Parameterized Remote Trigger Conf ...
- 如何创建一个项目,让gitlab自动触发jenkins进行构建
前进是:你已经配置好jenkins+gitlab自动化布置了,这里只是常规构建新的项目时,需要做的配置,记录下来,以免忘了又着急 参考这篇博客: https://www.jianshu.com/p/e ...
- 【最新】Android使用jenkins全自动构建打包-Windows版本(Android,Jenkins,360加固,Email,QRcode,参数构建,蒲公英)
Android打包喝咖啡系列(Windows版) 这篇博客主要讲述的内容: 1.windows上部署Jenkins https://jenkins.io 2.基于SVN或Git https://git ...
- jenkins的构建项目配置
继http://www.cnblogs.com/yajing-zh/p/5109517.html搭建好jenkins系统配置之后,新建jenkins构建项目,用于自动化构建. 点击Jenkins界面左 ...
- 持续集成(CI):API自动化+Jenkins定时构建
一.系统管理 1.管理监控配置 系统管理>>系统设置>>管理监控配置 2.设置接收测试报告的邮箱 系统管理>>系统设置>>配置Extended E-ma ...
- jenkins pipeline构建项目
以前用的jenkins自由风格发布代码.界面丑陋,出现问题位置不够清晰.今天改进一下流程使用jenkins pipeline构建项目. 学习使我快乐 步骤一.安装pipeline插件 点击系统管理-& ...
随机推荐
- 解读经典《C#高级编程》第七版 Page38-45.核心C#.Chapter2
前言 控制流是语言中最基础的部分,我们不谈具体的细节,只讲讲一些关键和有趣的点. 01 流控制 条件语句:if, else if, else if语句的使用非常值得细讲,如何是好的使用习惯.有一点非常 ...
- IdentityServer开题篇
最近也研究了一段时间的IdentityServer4,园里关于IdentityServer的文章也很多,这里也简单写写,做做记录(文笔不佳,见谅). 1.identityserver是什么? Iden ...
- .NET Framework 平台构造基础
CLR 公共语言运行库 执行给定编译代码单元所需的外部服务集合,它提供了一个定义明确的运行库层,可以被支持.NET的所有语言和平台所共享. 库 mscoree.dll:公共对象运行库执行引擎 当用户程 ...
- js作用域面试题大全
什么是作用域:浏览器给js的生存环境叫作用域. 什么是变量提升: Js代码执行前,浏览器会给一个全局作用域window Window分两个模块一个是存储模块一个是执行模块 存储模块找到所有的var和f ...
- JVM 垃圾回收机制
首先JVM的内存结构包括五大区域: 程序计数器.虚拟机栈.本地方法栈.方法区.堆区.其中程序计数器.虚拟机栈和本地方法栈3个区域随线程启动与销毁, 因此这几个区域的内存分配和回收都具有确定性,不需要过 ...
- laravel常见异常解决
requested URL not found http://stackoverflow.com/questions/21458080/the-requested-url-projectname-us ...
- webpack+vue+vueRouter模块化构建完整项目实例详细步骤-入门篇
新建项目 开始(确认已经安装node环境和npm包管理工具) 1.新建项目文件名为start_vuedemo 2.npm init -y 初始化项目,我的win7系统,工程在d盘的vue_test_p ...
- IIS搭建Web服务器,外网可以访问,但无法加载视频
错误提示如下: 可能原因: IIS的MIME中未注册MP4.ogg.webm相关类型,导致IIS无法识别 解决方法: 在IIS中注册MP4.ogg.webm类型,以下以MP4为例,ogg和webm以此 ...
- https协议为什么比http协议更加安全
一.http协议 http协议是一种网络传输协议,规定了浏览器和服务器之间的通信方式.位于网络模型中的应用层.(盗图小灰.ヾ(◍°∇°◍)ノ゙) 但是,它的信息传输全部是以明文方式,不够安全,很容易被 ...
- 判断NaN的真假
isNaN(val) 当val为NaN的时候,isNaN(val)返回ture 当val不为NaN的时候,isNaN(val)返回false