更改詹金斯内部版本号


142

作业完成后,是否可以更改通过电子邮件发送的内部版本号?问题在于Jenkins尚未完成产品的构建,因此我们希望能够获取内部版本号(即从文本文件中获取)并在Jenkins中更新内部版本号以使其匹配。我试图设置内部版本号:

set BUILD_NUMBER=45

但是电子邮件中仍然显示詹金斯最初设置的内部版本号。

Answers:


258

如果您有权访问脚本控制台(管理Jenkins->脚本控制台),则可以执行以下操作:

Jenkins.instance.getItemByFullName("YourJobName").updateNextBuildNumber(45)

7
我可以验证此方法可以很好地解决问题。我手动在两个jenkins服务器之间复制了构建历史记录,并且在新服务器上,nextBuildNumber错误。运行此命令使我可以设置正确的新nextBuildNumber,而无需重新加载jenkins配置。
Phil Hollenback

5
如果您使用的是GitHub插件,"YourJobName"则为"organization/repository/branchname"
Ruud

14
作品。无需构建即可使用以下方法验证该值:Jenkins.instance.getItemByFullName("YourJobName").getNextBuildNumber()
Daniel Alder

7
我可以确认这也适用于MultiBranch-Pipelines。“ JobName”列在分支页面的顶部:完整的项目名称:PipelineName/BranchName它将是Jenkins.instance.getItemByFullName("YourPipelineName/YourBranchName").updateNextBuildNumber(45)
Markus



29

在作业工作空间文件夹下,例如:

C:\Program Files (x86)\Jenkins\jobs\job_name

有一个名为的文件nextBuildNumber

在文件中设置内部版本号并从磁盘(“管理Jenkins”菜单)重新加载配置将强制您开始的下一个内部版本将文件中的值设置为BUILD_NUMBER。


9
更改nextBuildNumber文件后,是否从磁盘(“管理Jenkins”菜单)重新加载配置?
vezenkov 2015年

不!我以为它是自动发生的。
hfossli

这对我来说非常有效。您必须重新引导服务器才能生效。
Hawkeye64

如果您有许多用户正在运行管道,则必须重新引导服务器是一件很痛苦的事情。更好地避免这种解决方案
MorganGeek

8

如果您的分支名称包括正斜杠(例如,使用git flow),则需要在分支名称中用其Unicode字符%2F替换正斜杠

这是管道My-Pipeline-Name和分支release / my-release-branch-name的示例

Jenkins.instance.getItemByFullName("My-Pipeline-Name/release%2Fmy-release-branch-name").updateNextBuildNumber(BUILD_NUMBER)

我能够通过运行以下命令找到有关此信息,该命令将列出您的管道的不同作业(分支)

Jenkins.instance.getItem("My-Pipeline-Name").getAllJobs()

希望能帮助到你。



1

您可以通过在Jenkins服务器上更新文件$ {JENKINS_HOME} / jobs / job_name / nextBuildNumber来更改内部版本号。

您还可以安装插件Next Build Number插件,以使用CLI或UI更改内部版本号


请注意,仅更改nextBuildNumber文件中的内部版本号是不够的,还需要执行“管理Jenkins”菜单中的“从磁盘重新加载配置”。
福斯塔夫

-4

通过使用环境变量:

$BUILD_NUMBER =4

2
求求你,不要喊。谢谢。
OliBlogger
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.