我知道BUILD_NUMBER
环境变量;但是,除非我弄错了,否则这是一个全局变量,它似乎在所有项目中共享。这是一个问题,因为如果我有两个代理运行作业,一个脚本可能会尝试使用当前项目的内部版本号,而另一个脚本已经为另一个项目更新了它。
以下是一个示例场景:
BUILD_NUMBER
是500。BUILD_NUMBER
设置为完全不同的东西,比如750。BUILD_NUMBER
的点,现在设置为750(作业的一个不可能的值 J 1 ,最多只有500个。)我理解这个吗?如果是这样,我该如何解决这个问题?
答案 0 :(得分:10)
BUILD_NUMBER不是系统的全局。这是每个工作的本地。在您的示例中,J1和J2将具有不同的BUILD_NUMBER(J1 = 500,J2-750)值,并且在作业期间它们将在作业内保持不变。
答案 1 :(得分:5)
您可以使用以下内容获取最新(已完成或正在执行)的内部版本号
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
但是您需要根据需要解析输出。
答案 2 :(得分:0)
使用Get Next Build Number插件。
https://wiki.jenkins-ci.org/display/JENKINS/Next+Build+Number+Plugin