[英]How do I know the build number for the current project in Jenkins?
我知道BUILD_NUMBER
环境变量; 但是,除非我弄错了,否则这是一个全局变量,似乎在所有项目中共享。 这是一个问题,因为如果我有两个代理运行作业,一个脚本可能会尝试使用当前项目的内部版本号,而另一个脚本已经为另一个项目更新了它。
以下是一个示例场景:
BUILD_NUMBER
目前,比方说,500。 BUILD_NUMBER
设置为完全不同的东西,比如750。 BUILD_NUMBER
的点,现在设置为750(作业J 1的一个不可能的值,最多只有500)。 我理解这个吗? 如果是这样,我该如何解决这个问题?
BUILD_NUMBER不是系统的全局。 这是每个工作的本地。 在您的示例中,J1和J2将具有不同的BUILD_NUMBER(J1 = 500,J2-750)值,并且在作业期间它们将在作业内保持不变。
您可以使用以下命令获取最新 (已完成或正在执行)的内部版本号:
http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/buildNumber
或者从作业本身,您可以使用环境变量:
${BUILD_NUMBER}
您也可以使用所有其他永久链接,例如:
/lastStableBuild/
/lastSuccessfulBuild/
/lastFailedBuild/
等等。
除非您使用Next Build Number等插件自定义构建号,否则您的下一个构建号将始终是最新构建号的增量 。
构建编号是每个作业 。 它们不是全局环境变量。
每次执行任何作业时,它都会将现有环境变量复制/继承到新会话中 。 然后,Jenkins / Hudson将所有作业参数和额外变量(包括${BUILD_NUMBER}
)添加到该新会话中。 它们仅在该会话期间(即在作业运行期间)作为环境变量提供。 作业完成后, 将破坏此会话 (以及为会话生成的所有额外变量)。
您无法从另一个作业运行/会话访问一个作业运行/会话的环境变量。 但是,您可以通过我提供的URL方法访问另一个作业的/lastBuild/buildNumber
。 您也可以以相同的方式访问/lastBuild/buildTimestamp
。
要访问其他作业的作业参数 ,您可以使用:
http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/api/json
要么
http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/api/xml
但是您需要根据需要解析输出。
使用Get Next Build Number插件。
https://wiki.jenkins-ci.org/display/JENKINS/Next+Build+Number+Plugin
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.