Jenkins的构建编号和一个有趣的bug

简介:

[+]


什么是构建编号

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


正确的构建编号:每个job的每次构建结果使用不相同的构建编号

image


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

 image

 

多个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的系统设置:

管理员身份登录 - 系统管理 - 系统设置 - 主目录 - 高级

 image

jenkins的默认设置中,有一个主目录(workspace),并为每一个job和每一次的构建结果都提供了独立的目录

我原本是想修改默认的workspace(主目录),但错误地删除了jenkins为每一个job提供的独立目录(把工作空间根目录和构建记录根目录改成了固定值)


注意:主目录(workspace工作空间)是针对全局设置的,对于任何一个job还可以自定义工作空间,在后面的文章中,我会进行介绍。


每一次构建都产生了什么?

在jenkins中,每一次的构建记录都会被保留起来。

保存位置:默认保存在workspace/job name /构建编号/

每一次构建,都会创建一个以构建编号命令的文件夹


举例说明构建记录产生的文件

  • log:保存着此次构建在Console中输出的日志
  • build.xml:构建的信息,包括构建参数,构建结果,启动的用户名,启动时间戳
  • changelog.xml:修改日志


所有job的根目录

image


单个Job的根目录

image


单个job的所有构建日志

image


单个job的单次构建记录

image


本文出自赵青青,原文链接:http://www.cnblogs.com/zhaoqingqing/p/7204478.html,如需转载请自行联系原作者


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
jenkins Java Linux
Jenkins环境的部署及任务构建
以上就是Jenkins环境的部署及任务构建的全部内容。希望可以帮助你轻松上手Jenkins,让你的CI/CD之旅更加顺畅!
818 68
|
jenkins 持续交付 开发工具
利用Dockerfile自主构建Jenkins镜像
希望这个过程能善用你的野马般想象,把自己置身于和计算机的卓尔不凡的对话中,让编程的过程充满趣味。
454 36
|
12月前
|
Ubuntu jenkins 机器人
在Jenkins上配置触发Ubuntu环境的图形用户界面(GUI)构建任务。
以上,这趟融合了技术与艺术的Jenkins配置之旅就告一段落了。记住,技术应当像艺术一样有趣和生动,这样才能激发出最大的创新和效率。
375 2
|
运维 jenkins Java
Jenkins 自动化局域网管控软件构建与部署流程
在企业局域网管理中,Jenkins 作为自动化工具,通过配置源码管理、构建及部署步骤,实现了高效、稳定的软件开发与部署流程,显著提升局域网管控软件的开发与运维效率。
336 5
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
敏捷开发 jenkins 测试技术
阿里云云效产品使用问题之如何进行类似于jenkins那样参数化构建
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
Prometheus 监控 Cloud Native
使用 Jenkins 监控和优化构建性能
【8月更文第31天】在软件开发的过程中,构建性能直接影响着开发效率和团队的生产力。一个快速、可靠的构建流程可以显著加快迭代速度,减少等待时间,使团队能够更快地响应变化。Jenkins 作为一款广泛使用的持续集成/持续交付(CI/CD)工具,提供了丰富的功能来帮助开发者监控和优化构建性能。本文将探讨如何利用 Jenkins 的内置工具和外部工具来监控构建性能,并提出一些具体的优化方案。
1309 0
|
jenkins 持续交付
Jenkins Pipeline 流水线 - Parameters 参数化构建
Jenkins Pipeline 流水线 - Parameters 参数化构建
1107 0
|
jenkins 持续交付 网络安全
Jenkins Pipeline 流水线 - 完整构建 Pipeline Script 脚本
Jenkins Pipeline 流水线 - 完整构建 Pipeline Script 脚本
400 0
|
Java jenkins 持续交付
Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试
【7月更文挑战第1天】Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试。成功后,Jenkins执行部署任务,发布到服务器或云环境。使用Jenkins能提升效率,保证软件质量,加速上线,并需维护其稳定运行。
406 0

推荐镜像

更多