如何在jenkins中重置内部版本号?

Siv*_*r M 79 jenkins

我正在使用Jenkins和Gradle来构建我的java项目.

每次我构建我的项目时,我都会在Jenkins屏幕上获得一个新的内部版本号.

以下是我的Jenkins构建信息:

Success > Console Output  #96   03-Jan-2014 15:35:08    
Success > Console Output  #95   03-Jan-2014 15:27:29     
Failed > Console Output  #94    03-Jan-2014 15:26:16     
Failed > Console Output  #93    03-Jan-2014 15:25:01     
Failed > Console Output  #92    03-Jan-2014 15:23:50     
Success > Console Output  #91   03-Jan-2014 12:42:32    
Success > Console Output  #90   03-Jan-2014 12:02:45
Run Code Online (Sandbox Code Playgroud)

我想重置Jenkins内部版本号,如:

Success > Console Output  #1    03-Jan-2014 12:02:45
Run Code Online (Sandbox Code Playgroud)

如何在Jenkins中重置内部版本号?

提前致谢.

小智 140

从groovy脚本控制台可以更容易地完成.转到http:// your-jenkins-server/script 在脚本窗口中输入:

item = Jenkins.instance.getItemByFullName("your-job-name-here")
//THIS WILL REMOVE ALL BUILD HISTORY
item.builds.each() { build ->
  build.delete()
}
item.updateNextBuildNumber(1)
Run Code Online (Sandbox Code Playgroud)

  • 或者通过cli`java -jar jenkins-cli.jar -s https://jenkins.example.com groovysh \'jenkins.instance.getItemByFullName("job-name").updateNextBuildNumber(1021)'` (6认同)
  • 这绝对是最好的答案.如果你只想设置数字,你甚至不需要删除循环. (2认同)

Mok*_*kaT 61

这里开始

鉴于你的Hudson工作被命名为FooBar,

  • 将FooBar重命名为FooBar-Copy
  • 使用FooBar-Copy中的"复制现有作业"选项创建一个名为FooBar的新作业
  • 删除FooBar-Copy


jas*_*dan 34

  • 第一个擦除工作区,摆脱以前的构建.
    • 在服务器上导航到作业目录,例如.'var/lib/jenkins/jobs/myJob'删除工作区和构建目录以及任何轮询文件,lastSuccessful,lastStable文件等.您应该只有config.xml和lastBuildNumber.
    • 使用像服务jenkins停止的东西关闭jenkins
    • 编辑名为nextBuildNumber的文件,插入1而不是当前的内部版本号
    • 再次启动jenkins, 服务jenkins开始
    • 登录jenkins然后去找你的工作并点击构建.应该开始建立工作#1


Amo*_*kar 19

如果你想设置下一个内部版本号,那么就有插件"NextBuildNumber".但这不适用于您的情况,因为您需要的内部版本号(1)小于您当前的内部版本号.

这里需要首先消除所有以前的构建.您可以通过运行这个简单的脚本执行此操作 转到 - >管理Jenkins - >脚本控制台

// change this variable to match the name of the job whose builds you want to delete
def jobName = "Your Job Name"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
Run Code Online (Sandbox Code Playgroud)

现在,您可以将下一个内部版本号设置为1并运行构建.它将从1开始.:)就这么简单.

更新 - Jenkins现在有一个Purge Job History插件,可以最简单的方式完成.查看页面了解更多详情 - https://wiki.jenkins.io/display/JENKINS/Purge+Job+History+Plugin


c32*_*dge 6

一般而言,要将内部版本号重置为NN不一定是1):

  • 删除任何现有的内部版本buildNumber >= N
  • 编辑Program Files (x86)/Jenkins/jobs/yourjob/nextBuildNumber。将其包含的数字设置为N
  • 在Jenkins中,选择Manage Jenkins -> Reload Configuration from Disk


Rei*_*l-- 6

作为 @antweiss 优秀答案的延伸,我们实际上可以走得更远......

无需删除完整的构建历史记录,如果您不想,您可以简单地将时间回滚到之前的时间点:

resetNumberTarget = 14
item = Jenkins.instance.getItemByFullName("Project Name [from project Dashboard]")
//println(item)

item.builds.each() { build ->
  //println(build)
  //println(build.number)

  if(build.number >= resetNumberTarget)
  {
    //println("About to Delete '" + build + "'")    
    build.delete()  
  }
}

item.updateNextBuildNumber(resetNumberTarget)
Run Code Online (Sandbox Code Playgroud)

如果您想要进行虚拟运行,以检查它将要执行的操作,而无需实际执行,只需注释掉build.delete()item.updateNextBuildNumber(resetNumberTarget)行并取消注释各种打印命令即可。


文档:很难找到这些对象的详细信息,但我确定了以下内容:


zb2*_*226 5

扩展已接受的答案,以下是如何同时为所有项目执行此操作:

Jenkins.instance.allItems.each() { 
  item -> item.builds.each() { 
    build -> build.delete()
  }
  item.updateNextBuildNumber(1)
}  
Run Code Online (Sandbox Code Playgroud)