我正在将jenkins-workflow作业迁移到基于新模板的工作流作业。由于构建号被用作工作流生成的构建工件版本的一部分,因此我必须使用比旧工作流更多的数量来启动新工作流的构建编号。不幸的是,“下一个内部版本号”插件不适用于工作流程管道。为Jenkins工作流程(管道)构建设置内部版本号
有人知道这样做的好方法吗?
我正在将jenkins-workflow作业迁移到基于新模板的工作流作业。由于构建号被用作工作流生成的构建工件版本的一部分,因此我必须使用比旧工作流更多的数量来启动新工作流的构建编号。不幸的是,“下一个内部版本号”插件不适用于工作流程管道。为Jenkins工作流程(管道)构建设置内部版本号
有人知道这样做的好方法吗?
尝试在詹金斯脚本控制台运行下面的脚本..更改“工作流”到你的作业名
def job = Jenkins.instance.getItem("workFlow")
job.nextBuildNumber = 10
job.saveNextBuildNumber()
我也发现这样做的另一种方法,通过使用“詹金斯-CLI”。它适用于锁定装置那里获取脚本控制台不可用(CloudBees的企业詹金斯)
java -jar jenkins-cli.jar -s https://instanceURL/ \
set-next-build-number workflow-name 33
或者,你可以像这样的代码片段添加到您的管道/工作流任务DSL脚本(又名Jenkinsfile):
offset = 5
currentBuild.displayName = "#" + (currentBuild.number + offset)
这正是我需要的! –
不幸的是,上面列出的方法在使用文件夹时不起作用。我使出的詹金斯脚本控制台执行以下操作:
job = Jenkins.getInstance().getItemByFullName("BSKAzureConversion-Jobs/master", Job.class)
job.nextBuildNumber = 92
job.save()
如果对第3行使用'job.saveNextBuildNumber()',这对我的多分支管道起作用。 –
要从多分支管道中找到您的工作名称,请运行以下命令: 'def jobs = Jenkins.getInstance()。getAllItems(); println(jobs)' 然后,如上面描述的@DavidV: 'def job = Jenkins.instance.getItemByFullName(“YourTeam/your_project/features%2Fbranchname”); job.nextBuildNumber = 301; job.saveNextBuildNumber();' – kivagant
的几个注意事项:
@NonCPS
Jenkins.instance
全局不可访问,否则Jenkins.instance.getItem()
将不能很好地使用文件夹。使用Jenkins.instance.getItemByFullName
对env.JOB_NAME
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
}
这段代码不会将新版本号写入'nextBuildNumber'文件。因此,如果你(优雅地)重新启动Jenkins然后触发一个构建,它最终会使用'nextBuildNumber'文件中的任何内部编号(而不是上面代码片段中指定的那个编号)。使用'job.saveNextBuildNumber()'而不是'job.save()'来解决这个问题。 – Amit