如何清除我的 Jenkins/Hudson 构建历史记录?
-
25-09-2019 - |
题
我最近更新了我的 hudson 构建之一的配置。构建历史记录不同步。有没有办法清除我的构建历史记录?
谢谢,麻烦您了
解决方案
如果您单击管理哈德森/重新加载配置从磁盘,哈德森将重新加载所有构建历史数据。
如果磁盘上的数据被搞砸了,你需要去您%HUDSON_HOME%\工作\ << EM>项目名称>目录和恢复构建目录,他们应该是。然后重新加载配置数据。
如果你只是简单询问如何删除所有构建的历史,你可以删除通过用户界面由一个建立一个,如果有只是少数,或转到%HUDSON_HOME%\工作\ << EM>项目名称>目录,并删除所有子目录存在 - 它们对应于该版本。 然后重新启动该服务的改变生效。
其他提示
使用脚本控制台(管理詹金斯>脚本控制台)和像这样的脚本批量删除作业的构建历史的 https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy
该脚本假定你只想删除某个范围内的基础之上。要删除所有构建对于给定的工作,使用此(测试):
// 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() }
// uncomment these lines to reset the build number to 1:
//job.nextBuildNumber = 1
//job.save()
这个答案是给詹金斯的
代码:
def jobName = "copy_folder"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
下面是另一种选择:删除构建与卷曲
$ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
上面的删除构建#1〜#56用于作业myJob。
如果验证是在所述詹金斯实例启用,用户名和API令牌必须这样来提供:
$ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
在API令牌必须是从在所述詹金斯页面/me/configure
取出。只需点击“显示API令牌...”按钮,显示用户名和API令牌两种。
编辑:一个可能具有通过doDeleteAll
在上面的网址,以取代doDelete
来完成这项工作,根据配置或詹金斯的版本中使用
您可以暂时修改项目配置只保存最后1个构建,重新载入配置(这应该垃圾的旧版本),然后更改配置再次设置为你想要的值。
下面是如何删除所有建所有作业......使用詹金斯脚本。
def jobs = Jenkins.instance.projects.collect { it }
jobs.each { job -> job.getBuilds().each { it.delete() }}
这一个是最佳的选择可用。
Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }
此代码将删除所有詹金斯作业构建历史。
如果你想清除MultiBranchProject(例如管道)的建造历史, 去你詹金斯首页→管理→詹金斯脚本控制台并运行以下脚本:
def projectName = "ProjectName"
def project = Jenkins.instance.getItem(projectName)
def jobs = project.getItems().each {
def job = it
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
}
另一种简单的方法来清理构建是在你工作的末尾添加丢弃旧的插件。设置的最大数量的建立,保存,然后再次运行作业:
转到%HUDSON_HOME%\jobs\<projectname>
删除builds
DIR和删除lastStable, lastSuccessful
链接,并且删除nextBuildNumber
文件。
上述步骤后做去下面从UI,点击链接 Jenkins->管理詹金斯 - >重新加载配置从磁盘
它会做,因为你需要
如果使用脚本控制台方法然后尝试使用以下代替如果作业正在被分组到文件夹的容器要考虑到。
def jobName = "Your Job Name"
def job = Jenkins.instance.getItemByFullName(jobName)
或
def jobName = "My Folder/Your Job Name
def job = Jenkins.instance.getItemByFullName(jobName)
使用脚本控制台。
在情况下,工作分组有可能要么给它一个完整名称与正斜杠:
getItemByFullName("folder_name/job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
或穿越这样的层次结构:
def folder = Jenkins.instance.getItem("folder_name")
def job = folder.getItem("job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
直接从文件系统删除也不安全。您可以运行下面的脚本删除所有来自所有作业(递归)的基础之上。
def numberOfBuildsToKeep = 10
Jenkins.instance.getAllItems(AbstractItem.class).each {
if( it.class.toString() != "class com.cloudbees.hudson.plugins.folder.Folder" && it.class.toString() != "class org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject") {
println it.name
builds = it.getBuilds()
for(int i = numberOfBuildsToKeep; i < builds.size(); i++) {
builds.get(i).delete()
println "Deleted" + builds.get(i)
}
}
}```
依次选择:%JENKINS_HOME%\jobs\jobName
打开文件“nextBuildNumber”,改变的数目。之后重装詹金斯配置。注意:“nextBuildNumber”文件包含下一构建没有将由詹金斯使用