我最近更新了Hudson构建的配置,但是构建历史记录不同步。有没有办法清除我的构建历史记录?
谢谢。
我最近更新了Hudson构建的配置,但是构建历史记录不同步。有没有办法清除我的构建历史记录?
谢谢。
使用脚本控制台(管理Jenkins>脚本控制台),并使用类似于此脚本来批量删除作业的构建历史记录: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()
java.lang.NullPointerException: 无法在空对象上调用getBuilds()方法
- muhammed ozbilici这个答案是给Jenkins的
代码:
def jobName = "copy_folder"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
如果您点击“管理Hudson / 从磁盘重新加载配置”,Hudson将重新加载所有构建历史数据。
如果磁盘上的数据出错,您需要前往%HUDSON_HOME%\jobs\<projectname>目录,并按照预期还原构建目录。然后重新加载配置数据。
如果您只想删除所有构建历史记录,如果只有几个构建记录,可以通过UI逐个删除构建记录,或者前往%HUDSON_HOME%\jobs\<projectname>目录并删除那里的所有子目录--它们对应于构建记录。完成操作后,请重启服务以使更改生效。
这里还有另一种选择:使用 cURL 删除构建。
$ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
上述操作将删除名为myJob的任务的第1到56次构建记录。
如果Jenkins实例启用了身份验证,需要提供用户名和API令牌,例如:
$ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
API令牌必须从Jenkins的/me/configure
页面获取。只需点击"Show API Token..."按钮即可显示用户名和API令牌。
编辑:根据Jenkins使用的配置或版本,可能需要将上述URL中的doDeleteAll
替换为doDelete
才能使其正常工作。
以下是使用Jenkins脚本删除所有任务的所有构建历史记录的方法......
def jobs = Jenkins.instance.projects.collect { it }
jobs.each { job -> job.getBuilds().each { it.delete() }}
结果:[]
,构建未被删除。 - JRichardsz您可以暂时修改项目配置,仅保存最后1次构建,重新加载配置(这应该会删除旧的构建),然后再将配置设置更改为所需值。
如果您想清除MultiBranchProject(例如pipeline)的构建历史记录, 请进入Jenkins主页→管理Jenkins→脚本控制台并运行以下脚本:
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()
}
Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }
这段代码将删除所有Jenkins作业构建历史记录。
使用脚本控制台。
如果任务已分组,则可以使用斜杠给出完整名称:
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()
进入“管理Jenkins”>“脚本控制台”
运行以下命令:
def jobName = "build_name"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.save()