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,如需转载请自行联系原作者


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
jenkins 持续交付
Jenkins Pipeline 参数化构建
Jenkins Pipeline 参数化构建
86 0
|
4月前
|
存储 jenkins 持续交付
Jenkins 构建环境指南
Delete workspace before build starts(常用) 在每次构建开始前清空工作空间。这确保了每次构建开始时都是在一个干净的环境下进行,避免了旧的文件或数据对新构建的影响。特别是对于需要频繁构建的项目,保持工作空间的干净能够确保构建过程的可靠性。 Use secret text(s) or file(s) (常用) 允许你在构建过程中使用加密的文本或文件作为凭证。这对于需要访问受保护资源的构建任务非常有用,可以安全地存储和使用密码、API 密钥等敏感信息,而不用担心泄漏。
127 2
|
25天前
|
jenkins 持续交付
Jenkins构建简单流水线
Jenkins构建简单流水线
11 0
|
4月前
|
安全 jenkins 持续交付
Jenkins 构建触发器指南
描述 这个触发器允许你通过发送HTTP请求远程触发Jenkins Job的构建。通常用于将Jenkins集成到自动化流程中,例如在持续集成/持续交付(CI/CD)中。 配置步骤 进入Jenkins Job的配置页面,找到 "构建触发器" 部分。 勾选 "触发远程构建 (例如,使用脚本) / Trigger builds remotely (e.g., from scripts)"。 安全令牌 提供一个安全令牌(Token),确保只有知道令牌的请求才能触发构建。 比如:JENKINS_URL/job/freedom/build?token=TOKEN_NAME JENKINS_URL: 这是你J
196 1
|
4月前
|
JSON jenkins 持续交付
jenkins-Generic Webhook Trigger指定分支构建
jenkins-Generic Webhook Trigger指定分支构建
66 0
|
4月前
|
jenkins 持续交付 数据安全/隐私保护
push请求触发Jenkins中的构建
push请求触发Jenkins中的构建
|
4月前
|
JavaScript jenkins 持续交付
Jenkins自动化构建Vue项目的实践
在现代的Web开发中,Vue.js已经成为一种非常流行的JavaScript框架。为了更高效地管理和部署Vue.js项目,使用自动化构建工具是至关重要的。Jenkins作为一款强大的持续集成和持续部署(CI/CD)工具,为我们提供了一种便捷的方式来自动化构建Vue.js项目。本文将介绍如何在Jenkins中配置和使用自动化构建Vue.js项目的步骤。
92 1
Jenkins自动化构建Vue项目的实践
|
4月前
|
存储 jenkins 持续交付
git文件过大导致构建失败的解决方案(快速提升jenkins构建速度)
git文件过大导致构建失败的解决方案(快速提升jenkins构建速度)
67 0
|
5月前
|
Java jenkins 持续交付
jenkins构建jar包为镜像并上传到docker仓库
jenkins构建jar包为镜像并上传到docker仓库
124 0
|
5月前
|
缓存 jenkins 持续交付
jenkins构建邮件通知
jenkins构建邮件通知
42 0