我正在使用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
我想重置Jenkins内部版本号,如:
Success > Console Output #1 03-Jan-2014 12:02:45
如何在Jenkins中重置内部版本号?
提前致谢。
答案 0 :(得分:133)
从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)
答案 1 :(得分:59)
来自here
鉴于您的Hudson职位名为FooBar,
- 将FooBar重命名为FooBar-Copy
- 使用来自FooBar-Copy的“复制现有作业”选项创建一个名为FooBar的新作业
- 删除FooBar-Copy
答案 2 :(得分:33)
答案 3 :(得分:17)
如果你想设置下一个内部版本号,那么就有插件“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() }
现在,您可以将下一个内部版本号设置为1并运行构建。它将以 1 开头。 :) 就这么简单。
更新 - Jenkins现在有一个清除工作历史插件,可以最简单的方式完成此操作。查看页面了解更多详情 - https://wiki.jenkins.io/display/JENKINS/Purge+Job+History+Plugin
答案 4 :(得分:5)
更常将您的内部版本号重置为N
(其中N
不一定是1):
buildNumber >= N
。Program Files (x86)/Jenkins/jobs/yourjob/nextBuildNumber
。将其包含的数字设置为N
。Manage Jenkins -> Reload Configuration from Disk
。答案 5 :(得分:5)
扩展已接受的答案,以下是如何同时为所有项目执行此操作:
Jenkins.instance.allItems.each() {
item -> item.builds.each() {
build -> build.delete()
}
item.updateNextBuildNumber(1)
}
答案 6 :(得分:2)
作为@ 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)
如果您想进行虚拟运行,要检查它将要执行的操作,而不实际执行此操作,只需注释掉build.delete()
和item.updateNextBuildNumber(resetNumberTarget)
行并取消注释各种打印命令。
item
是FreeStyleProject(或者可能只是Abstract Project的任何类型?)build
似乎是Run,因此公开number属性并从delete() 答案 7 :(得分:1)
您可以使用nexBuildNumber
插件或只修改nexBuildNumber
文件来重置内部版本号。
以下是您需要执行的步骤:
.jenkins/Jobs/<YourJobName>/build/
,备份此文件夹(如果您需要以后使用)并删除构建文件夹。注意:清理旧版本后,您将丢失构建历史记录 在Jenkins仪表板上不再可用。
nextBuildNumber
文件,将下一个版本版本设置为1。答案 8 :(得分:0)
我找到了一种简单的方法。
Jenkins使用先前的内部版本确定下一个内部版本号,如果您输入的内部版本号低于先前的内部版本号,Jenkins会自动将您的内部版本号增加到高于先前的内部版本号。所以我们在这里
答案 9 :(得分:0)
使用Purge Job History插件(Jenkins> = 2.176.1)
答案 10 :(得分:0)
所以我尝试了上述解决方案并得到以下错误。,
<块引用>groovy.lang.MissingPropertyException: No such property: builds for 班级: org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject。
所以我尝试了这个,
item = Jenkins.get().getItem("Job Name")
jobs = item.getAllJobs()
jobs.each() { item ->
builds = item.getBuilds()
builds.each() { b ->
b.delete()
}
item.updateNextBuildNumber(1)
}
它奏效了!!
答案 11 :(得分:-1)
重置所有作业的内部版本号:
Jenkins.instance.getAllItems(AbstractProject.class).each {
item = Jenkins.instance.getItemByFullName(it.fullName)
//THIS WILL REMOVE ALL BUILD HISTORY
item.builds.each() { build ->
build.delete()
}
item.updateNextBuildNumber(1)
}