当前位置:  开发笔记 > 前端 > 正文

我如何知道Jenkins当前项目的内部版本号?

如何解决《我如何知道Jenkins当前项目的内部版本号?》经验,为你挑选了2个好方法。

我知道BUILD_NUMBER环境变量; 但是,除非我弄错了,否则这是一个全局变量,似乎在所有项目中共享.这是一个问题,因为如果我有两个代理运行作业,一个脚本可能会尝试使用当前项目的内部版本号,而另一个脚本为另一个项目更新它.

以下是一个示例场景:

工作Ĵ 1周开始,执行一些脚本小号.BUILD_NUMBER目前,比方说,500.

有人手动启动作业J 2,现在设置BUILD_NUMBER为完全不同的东西,比如750.

仍然在运行的脚本S现在达到它实际使用的点BUILD_NUMBER,现在设置为750(作业J 1的一个不可能的值,最多只有500).

我理解这个吗?如果是这样,我该如何解决这个问题?



1> Jason Swager..:

BUILD_NUMBER不是系统的全局.这是每个工作的本地.在您的示例中,J1和J2将具有不同的BUILD_NUMBER(J1 = 500,J2-750)值,并且在作业期间它们将在作业内保持不变.



2> Slav..:

您可以使用以下内容获取最新(已完成或正在执行)的内部版本号,
http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/buildNumber
或者从作业本身中获取环境变量:
${BUILD_NUMBER}

您也可以使用所有其他永久链接,例如:
/lastStableBuild/
/lastSuccessfulBuild/
/lastFailedBuild/
等等.

除非您使用Next Build Number等插件自定义构建号,否则您的下一个构建号将始终是最新构建号的增量.

构建编号是每个作业.它们不是全局环境变量.
每次执行任何作业时,它都会将现有环境变量复制/继承新会话中.然后,Jenkins/Hudson将所有作业参数和额外变量(包括${BUILD_NUMBER})添加到该新会话中.它们仅在该会话期间(即在作业运行期间)作为环境变量提供.作业完成后,将破坏会话(以及为会话生成的所有额外变量).

无法从另一个作业运行/会话访问一个作业运行/会话的环境变量.但是,您可以/lastBuild/buildNumber通过我提供的URL方法访问另一个作业.您也可以/lastBuild/buildTimestamp以相同的方式访问.

要访问另一个作业的作业参数,您可以使用:
http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/api/json
或者
http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/api/xml
您需要根据需要解析输出.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有