我知道BUILD_NUMBER
环境变量; 但是,除非我弄错了,否则这是一个全局变量,似乎在所有项目中共享.这是一个问题,因为如果我有两个代理运行作业,一个脚本可能会尝试使用当前项目的内部版本号,而另一个脚本为另一个项目更新它.
以下是一个示例场景:
工作Ĵ 1周开始,执行一些脚本小号.BUILD_NUMBER
目前,比方说,500.
有人手动启动作业J 2,现在设置BUILD_NUMBER
为完全不同的东西,比如750.
仍然在运行的脚本S现在达到它实际使用的点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}
)添加到该新会话中.它们仅在该会话期间(即在作业运行期间)作为环境变量提供.作业完成后,将破坏此会话(以及为会话生成的所有额外变量).
您无法从另一个作业运行/会话访问一个作业运行/会话的环境变量.但是,您可以/lastBuild/buildNumber
通过我提供的URL方法访问另一个作业.您也可以/lastBuild/buildTimestamp
以相同的方式访问.
要访问另一个作业的作业参数,您可以使用:
http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/api/json
或者
http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/api/xml
您需要根据需要解析输出.