我正在將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