什么是构建编号

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的更多相关文章

  1. salesforce零基础学习(一百一十五)记一个有趣的bug

    本篇参考:https://help.salesforce.com/s/articleView?language=en_US&type=1&id=000319486 page layou ...

  2. 【bug】记一个有趣的“bug”

    产品经理在使用我们用户功能的是,需要查询一个用户,知道这个用户的id,我说支持模糊查询的. 他输入"余XX",点击查询,怎么都查不出这个用户. 我到用户表里确认,确实有这个ID的用 ...

  3. 一个有趣的BUG/按钮disabled之后还能触发click事件

    一个很有意思的Bug 某天测试同学再次向我反馈,你这个删除按钮虽然置灰了,但是还是可以点击啊? 我:????(黑人问号) 卧槽?不可能啊,按钮都disabled了,怎么还可以点击?还能触发click事 ...

  4. jenkins:一个jenkins项目远程触发另一个jenkins项目构建配置

    很多时候,我们会有这样的应用场景:一个jenkins上的项目构建后,需要远程触发另一台机子上的jenkins中某个项目的构建,可以通过Parameterized Remote Trigger Conf ...

  5. 如何创建一个项目,让gitlab自动触发jenkins进行构建

    前进是:你已经配置好jenkins+gitlab自动化布置了,这里只是常规构建新的项目时,需要做的配置,记录下来,以免忘了又着急 参考这篇博客: https://www.jianshu.com/p/e ...

  6. 【最新】Android使用jenkins全自动构建打包-Windows版本(Android,Jenkins,360加固,Email,QRcode,参数构建,蒲公英)

    Android打包喝咖啡系列(Windows版) 这篇博客主要讲述的内容: 1.windows上部署Jenkins https://jenkins.io 2.基于SVN或Git https://git ...

  7. jenkins的构建项目配置

    继http://www.cnblogs.com/yajing-zh/p/5109517.html搭建好jenkins系统配置之后,新建jenkins构建项目,用于自动化构建. 点击Jenkins界面左 ...

  8. 持续集成(CI):API自动化+Jenkins定时构建

    一.系统管理 1.管理监控配置 系统管理>>系统设置>>管理监控配置 2.设置接收测试报告的邮箱 系统管理>>系统设置>>配置Extended E-ma ...

  9. jenkins pipeline构建项目

    以前用的jenkins自由风格发布代码.界面丑陋,出现问题位置不够清晰.今天改进一下流程使用jenkins pipeline构建项目. 学习使我快乐 步骤一.安装pipeline插件 点击系统管理-& ...

随机推荐

  1. [机器学习] --- Getting Started With MachineLearning

    一. What's machine learning Machine Learning is the science of gettingcomputers to act without being  ...

  2. Jenkins入门之新建任务

    简单了解了Jenkins界面之后,下面我们简单介绍一下如何使用jenkins创建一个任务.打开Jenkins web管理界面之后,点击左侧最上方的NewItem图标 便会进入如下界面 产生要输入一个构 ...

  3. MySQL中间件之ProxySQL(1):简介和安装

    返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.ProxySQL简介 之前的文章里,介绍了一个MySQL的中间件: ...

  4. IPv6笔记

    单播地址包含的几种类型:1.AGUA地址:2000::到3FFF:FFFF:FFFF:FFFF:FFFF..... 一个接口可以拥有若干个AGUA地址2.Link-Local 地址:FE80::/10 ...

  5. [转]Database Transactions in Laravel

    本文转自:https://fideloper.com/laravel-database-transactions Laravel's documentation on Database Transac ...

  6. team项目学习01

    项目里面有好多单词不理解.先查一下. authorize:授权,批准 controller:控制器 domain:领域,域 form:表格,形式,窗体 interceptor 拦截器,自定义动画渲染器 ...

  7. struts2_struts2基本配置

    基本配置 1.新建web项目 2.导入jar包 struts2所需jar包下载: https://files.cnblogs.com/files/aihuadung/struts%E6%89%80%E ...

  8. java反射知识相关的文章

    整理的反射相关的文章: (1).通俗理解反射(知乎):学习java应该如何理解反射? (2).关于反射比较深入的博文地址:深入解析Java反射(1) - 基础 贴出我反射调用代码:(craw,dept ...

  9. 【Java每日一题】20170206

    20170120问题解析请点击今日问题下方的“[Java每日一题]20170206”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; public cla ...

  10. Syncrhonized 和 Lock的区别和使用

    相信很多小伙伴们初学多线程的时候会被这两个名词搞晕,所以这里专门介绍这两种实现多线程锁的方式的区别和使用场景 Synchronized 这个关键词大家肯定都不陌生,具体的用法就是使用在对象.类.方法上 ...