更改Jenkins构建编号

188

有没有一种方法可以在作业完成后通过电子邮件发送更改构建号码的方式?问题在于我们的产品构建并不是由Jenkins完成的,所以我们希望能够获取构建号码(即从文本文件中获取)并更新Jenkins中的构建号码以匹配它。我已经尝试设置构建号码:

set BUILD_NUMBER=45

但是电子邮件仍然显示Jenkins最初设置的构建编号。

9个回答

371

如果您可以访问脚本控制台(管理 Jenkins -> 脚本控制台),那么您可以按照以下步骤操作:

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

8
我可以确认这种方法完美地解决了问题。我手动复制了两个Jenkins服务器之间的构建历史记录,但在新服务器上nextBuildNumber是错误的。运行这个命令让我能够设置一个正确的新的nextBuildNumber,无需重新加载任何Jenkins配置。 - Phil Hollenback
9
如果您正在使用 GitHub 插件,"YourJobName" 就是 "组织名称/代码库名称/分支名称" - Ruud
34
工作。可以使用以下方式验证价值,而无需构建:Jenkins.instance.getItemByFullName("您的工作名称").getNextBuildNumber() - Daniel Alder
10
我可以确认这也适用于多分支流水线。 "JobName" 在分支页面的顶部列出:完整项目名称:PipelineName/BranchName ,因此应为 Jenkins.instance.getItemByFullName("YourPipelineName/YourBranchName").updateNextBuildNumber(45) - Markus
1
@Quantic https://meta.stackoverflow.com/questions/356435/hidden-characters-in-comment@Quantic https://meta.stackoverflow.com/questions/356435/评论中的隐藏字符 - Daniel Alder
显示剩余6条评论

39

2
No need to use plugin. - david.perez
1
谢谢,你救了我的一天。 - Max

33

在工作区文件夹下,例如:

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

有一个名为nextBuildNumber的文件。

在该文件中设置构建号,并从磁盘重新加载配置(管理Jenkins菜单),将强制启动下一次构建时使用文件中的值作为BUILD_NUMBER。


11
你有没有在更改 nextBuildNumber 文件后从磁盘重新加载配置(管理 Jenkins 菜单)? - vezenkov
不是这样的!我以为它会自动发生。 - hfossli
1
这对我来说完美地运作了。在生效之前,您必须重新启动服务器。 - Hawkeye64
1
如果有许多用户运行管道,不得不重新启动服务器会很麻烦。最好避免这种解决方案。 - MorganGeek

10

如果您的分支名称包括正斜杠(例如使用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()
希望有所帮助。

5

非常感谢 - 我能够使用其中一个插件。 - erman8

4

对于多分支流水线项目,在脚本控制台中执行以下操作:

def project = Jenkins.instance.getItemByFullName("YourMultibranchPipelineProjectName")    
project.getAllJobs().each{ item ->   
    
    if(item.name == 'jobName'){ // master, develop, feature/......
      
      item.updateNextBuildNumber(#Number);
      item.saveNextBuildNumber();
      
      println('new build: ' + item.getNextBuildNumber())
    }
}

3

您可以通过更新文件 ${JENKINS_HOME}/jobs/job_name/nextBuildNumberJenkins 服务器上更改构建编号。

您还可以安装插件 Next Build Number plugin,使用 CLIUI 更改构建编号。


3
请注意,仅仅改变nextBuildNumber文件中的构建编号是不够的,在“管理Jenkins”菜单中执行“从磁盘重新加载配置”也是必要的。 - falstaff

3

请按照以下步骤操作:Jenkins控制台 > 管理Jenkins > 脚本控制台,然后编写以下脚本:

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

该脚本可用于更新指定任务的下一个构建编号。请注意保留HTML标签,不要添加解释。

这对于stackoverflow.com上得票最高的答案https://dev59.com/CmIk5IYBdhLWcg3wDKNb#36901733有任何增值吗? - Henry

-5

通过使用环境变量:

$BUILD_NUMBER =4

2
请不要大声喊叫。谢谢。 - OliCoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接