我确实有开发团队的要求来设置构建系统,因此每个构建对于所有分支都将具有唯一的构建编号。
詹金斯使用每个分支的作业进行构建。
有一个jenkins插件可以为工作设置下一个内部版本号,但这至少有两个原因是没有用的:
如何获取内部版本号:我们使用git / mercurial中的分支名称和修订版号进行HTTP调用。基于此,集中式服务器为我们提供了一个内部版本号。如果使用相同的参数两次调用它,您将得到相同的响应(期望的行为)。
现在,我们如何调整詹金斯使用与我们相同的内部版本号?显然,我可以使用从脚本返回的内部版本号,但是工作编号会有所不同,我怀疑詹金斯会知道我接触了脚本内部的BUILD_NUMBER变量。
主要是,我需要的是我可以运行的某种pre-job-start脚本,该脚本可以在将内部版本号分配给作业之前运行。
您可以在运行之前使用Environment Injector插件来评估Groovy脚本。我几乎有相同的要求,但是对我来说,只有job_prefix_名称相同的工作共享唯一的相同nextBuildNumber(换句话说,名称相同的其他工作job_prefix2_共享不同的nextBuildNumber)。
job_prefix_
nextBuildNumber
job_prefix2_
在本Evaluated Groovy Script节中,请使用:
Evaluated Groovy Script
import jenkins.model.* // Access to the Jenkins instance jenkins_instance = jenkins.model.Jenkins.instance // Select jobs that match. job_name = "^job_prefix_.*" allItems = jenkins_instance.items chosenJobs = allItems.findAll{ job -> job.name.matches(job_name) } // Get the max build_number = chosenJobs.collect{ it -> it.nextBuildNumber }.max() // Increase next build number currentJob.nextBuildNumber = build_number + 1 // and use it. def map = [BUILD_NUMBER: build_number] return map