有没有一种方法可以在作业完成后通过电子邮件发送更改构建号码的方式?问题在于我们的产品构建并不是由Jenkins完成的,所以我们希望能够获取构建号码(即从文本文件中获取)并更新Jenkins中的构建号码以匹配它。我已经尝试设置构建号码:
set BUILD_NUMBER=45
但是电子邮件仍然显示Jenkins最初设置的构建编号。
有没有一种方法可以在作业完成后通过电子邮件发送更改构建号码的方式?问题在于我们的产品构建并不是由Jenkins完成的,所以我们希望能够获取构建号码(即从文本文件中获取)并更新Jenkins中的构建号码以匹配它。我已经尝试设置构建号码:
set BUILD_NUMBER=45
但是电子邮件仍然显示Jenkins最初设置的构建编号。
如果您可以访问脚本控制台(管理 Jenkins -> 脚本控制台),那么您可以按照以下步骤操作:
Jenkins.instance.getItemByFullName("YourJobName").updateNextBuildNumber(45)
插件Next Build Number Plugin可完成以下操作:
更多信息请参考:http://www.alexlea.me/2010/10/howto-set-hudson-next-build-number.html
如果您不喜欢使用插件:
如果您想通过nextBuildNumber文件更改构建编号,则应从“管理Jenkins”页面重新加载配置。
在工作区文件夹下,例如:
C:\Program Files (x86)\Jenkins\jobs\job_name
有一个名为nextBuildNumber
的文件。
在该文件中设置构建号,并从磁盘重新加载配置(管理Jenkins菜单),将强制启动下一次构建时使用文件中的值作为BUILD_NUMBER。
如果您的分支名称包括正斜杠(例如使用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()
希望有所帮助。也许这些插件的组合会很有用:
对于多分支流水线项目,在脚本控制台中执行以下操作:
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())
}
}
您可以通过更新文件 ${JENKINS_HOME}/jobs/job_name/nextBuildNumber
在 Jenkins 服务器上更改构建编号。
您还可以安装插件 Next Build Number plugin,使用 CLI 或 UI 更改构建编号。
请按照以下步骤操作:Jenkins控制台 > 管理Jenkins > 脚本控制台,然后编写以下脚本:
Jenkins.instance.getItemByFullName("Your_job_name").updateNextBuildNumber(45)
该脚本可用于更新指定任务的下一个构建编号。请注意保留HTML标签,不要添加解释。通过使用环境变量:
$BUILD_NUMBER =4
"YourJobName"
就是"组织名称/代码库名称/分支名称"
。 - RuudJenkins.instance.getItemByFullName("您的工作名称").getNextBuildNumber()
。 - Daniel AlderPipelineName/BranchName
,因此应为Jenkins.instance.getItemByFullName("YourPipelineName/YourBranchName").updateNextBuildNumber(45)
。 - Markus