1. 概述

Jenkins 是目前最流行的开源自动化服务器之一,广泛用于软件的自动化构建、测试和部署。和其他自动化平台一样,Jenkins 会给每个任务(Job)分配一个唯一的构建编号(Build Number)。默认情况下,这个编号从 1 开始,每次构建递增。

构建编号在追踪构建记录、定位问题时非常有用。但在某些场景下,我们可能希望将编号重置为 1,或者设置为某个特定值。幸运的是,Jenkins 提供了多种方式来实现这一点。

本文将介绍几种在 Jenkins 中重置构建编号的方法,帮助你根据实际需求选择最适合的方式。


2. 通过覆盖任务历史重置构建编号

⚠️ 这类方法会修改或删除已有构建记录,操作前请务必确认已备份或了解后果,尤其在生产环境中。

2.1 使用 Next Build Number 插件

Jenkins 的插件生态非常丰富,重置构建编号也不例外。Next Build Number 插件可以非常方便地设置下一个构建编号。

操作步骤:

  1. 进入 Jenkins 控制台:Dashboard -> Manage Jenkins -> Plugins
  2. 安装 Next Build Number 插件
  3. 安装完成后,左侧菜单会出现 Set Next Build Number 选项
  4. 点击该选项,输入你希望的下一个构建编号并保存
  5. 触发一次构建,新编号即生效

⚠️ 注意:

  • 输入的编号必须大于当前最新构建的编号
  • 如果想回退到之前的编号,需先删除历史构建记录

2.2 修改 nextBuildNumber 文件

如果不想安装插件,也可以手动修改 Jenkins 任务目录下的 nextBuildNumber 文件。

操作步骤:

  1. 登录 Jenkins 服务器
  2. 找到任务目录:${JENKINS_HOME}/jobs/<job-name>
  3. 编辑 nextBuildNumber 文件,修改为期望的下一个构建编号
  4. 进入 Jenkins 控制台,点击 Dashboard -> Manage Jenkins -> Reload Configuration from Disk
  5. 触发一次构建,新编号生效

⚠️ 注意:

  • 与插件方式相同,如果希望使用已有编号,需先删除旧构建
  • 修改后务必重载配置,否则不生效

2.3 使用 Jenkins 脚本控制台(Script Console)

Jenkins 提供了一个 Groovy 脚本执行入口,我们可以通过它来动态修改构建编号。

基本脚本示例:

jobName = "<job-name>"
item = Jenkins.instance.getItemByFullName(jobName)
item.updateNextBuildNumber(<number>)

完整重置并删除旧构建脚本:

jobName = "<job-name>"
item = Jenkins.instance.getItemByFullName(jobName)

// 删除所有旧构建
item.builds.each { build ->
    build.delete()
}

item.updateNextBuildNumber(1)

⚠️ 注意:

  • 需要替换 <job-name> 为实际任务名称
  • 删除构建是不可逆操作,请谨慎执行

2.4 使用 Jenkins CLI

如果希望通过脚本自动执行构建编号重置,可以使用 Jenkins CLI。

操作步骤:

  1. 创建 Groovy 脚本文件 reset_build_number.groovy,内容如下:
import jenkins.*
import jenkins.model.*
import hudson.*
import hudson.model.*

jobName = "<job-name>"
item = Jenkins.instance.getItemByFullName(jobName)

// 删除所有旧构建
item.builds.each { build ->
    build.delete()
}

item.updateNextBuildNumber(1)
  1. 执行 CLI 命令:
java -jar jenkins-cli.jar -s https://<jenkins-controller-ip>/ -auth admin:password groovy = < reset_build_number.groovy

⚠️ 注意:

  • 替换 <jenkins-controller-ip>adminpassword 为实际值
  • 此方法会删除所有历史构建,生产环境慎用

3. 通过复制并重命名任务重置构建编号

上述方法都会影响任务的历史记录,如果你希望保留历史记录,同时又想从 1 开始重新计数,可以使用“复制任务”方式。

操作步骤:

  1. 在 Jenkins 中找到原任务,点击 Configure
  2. 复制任务(可使用 Copy existing item 功能)
  3. 重命名新任务,保持配置一致
  4. 删除原任务(可选),或保留作为历史备份

优点:

  • 保留原任务历史记录
  • 新任务构建编号从 1 开始

缺点:

  • 占用额外磁盘空间
  • 需要手动同步配置

4. 总结

本文介绍了在 Jenkins 中重置构建编号的几种常见方式,包括:

方法 是否修改历史 是否推荐 说明
使用 Next Build Number 插件 简单安全,推荐首选
修改 nextBuildNumber 文件 无需插件,适合离线操作
使用 Script Console ⚠️ 灵活但需谨慎操作
使用 Jenkins CLI ⚠️ 适合自动化脚本
复制并重命名任务 不修改历史,适合备份场景

根据实际需求选择合适的方式,尤其是生产环境,操作前务必做好备份和测试。


原始标题:Reset Build Number in Jenkins