我正在将Jenkins工作流的任务迁移到基于新模板的工作流任务。由于构建号用作工作流生成的构建产物版本的一部分,所以我必须从比旧工作流更大的数字开始新工作流的构建号。不幸的是,“下一个构建号”插件无法与工作流管道配合使用。
是否有人知道一个好方法来解决这个问题?
我正在将Jenkins工作流的任务迁移到基于新模板的工作流任务。由于构建号用作工作流生成的构建产物版本的一部分,所以我必须从比旧工作流更大的数字开始新工作流的构建号。不幸的是,“下一个构建号”插件无法与工作流管道配合使用。
是否有人知道一个好方法来解决这个问题?
或者,您可以将类似以下的代码片段添加到您的管道/工作流作业DSL脚本中(也称为Jenkinsfile):
offset = 5
currentBuild.displayName = "#" + (currentBuild.number + offset)
遗憾的是,上述列出的方法在我使用文件夹时无法正常工作。我不得不在 Jenkins 脚本控制台中采用以下方法:
job = Jenkins.getInstance().getItemByFullName("BSKAzureConversion-Jobs/master", Job.class)
job.nextBuildNumber = 92
job.save()
job.saveNextBuildNumber()
,这对我的多分支流水线有效。 - David Vdef jobs = Jenkins.getInstance().getAllItems(); println(jobs)
然后,如@DavidV上面所述:def job = Jenkins.instance.getItemByFullName("YourTeam/your_project/features%2Fbranchname"); job.nextBuildNumber = 301; job.saveNextBuildNumber();
- kivagant请在Jenkins脚本控制台中运行下面的脚本。将"workFlow"更改为您的工作名称。
def job = Jenkins.instance.getItem("workFlow")
job.nextBuildNumber = 10
job.saveNextBuildNumber()
job.saveNextBuildNumber()
替代job.save()
可以解决这个问题。 - Amit一些注意事项:
@NonCPS
Jenkins.instance
这样的全局变量否则无法访问Jenkins.instance.getItem()
与文件夹不兼容。请针对env.JOB_NAME
使用Jenkins.instance.getItemByFullName
job.nextBuildNumber
将在下一个构建生效,所以继续启动下一个构建代码:
@NonCPS
def updateBuildNumber(build_number) {
def job = Jenkins.instance.getItemByFullName(env.JOB_NAME, Job.class)
job.nextBuildNumber = build_number
job.saveNextBuildNumber()
build env.JOB_NAME
return true
}
我使用了@Jayan的答案,并进行了修改以支持从该工作流程获取分支,因为getItem("workflow/job/mybranch")
无法正常工作。
def job = Jenkins.instance.getItem("workFlow").getItemByBranchName("mybranch")
job.nextBuildNumber = 10
job.saveNextBuildNumber()
我还发现了另一种方法,可以使用 'jenkins-cli' 来完成这个任务。它适用于访问脚本控制台不可用的受限安装(Cloudbees Enterprise Jenkins)。
java -jar jenkins-cli.jar -s https://instanceURL/ \
set-next-build-number workflow-name 33