如何清除Jenkins/Hudson构建历史记录?

myu*_*uf3 81 build-automation continuous-integration hudson jenkins

我最近更新了我的一个hudson版本的配置.构建历史记录不同步.有没有办法清除我的构建历史?

谢谢,麻烦您了

rjo*_*ton 97

使用脚本控制台(管理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()
Run Code Online (Sandbox Code Playgroud)

  • 大!!绝对是最好的方法!:) (5认同)

Nay*_*iya 68

这个答案适用于詹金斯

  1. 转到Jenkins主页→ 管理Jenkins脚本控制台

    在此输入图像描述

  2. 在那里运行以下脚本.更改copy_folderyour project name

码:

def jobName = "copy_folder"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
Run Code Online (Sandbox Code Playgroud)

我的帖子

  • 到目前为止最佳答案 (4认同)
  • 这是最快的解决方案。 (2认同)

Wil*_*ara 47

如果单击Manage Hudson/Reload Configuration From Disk,Hudson将重新加载所有构建历史数据.

如果磁盘上的数据搞砸了,您需要转到%HUDSON_HOME%\ jobs\< projectname >目录并恢复构建目录,因为它们应该是.然后重新加载配置数据.

如果您只是询问如何删除所有构建历史记录,您可以通过UI逐个删除构建(如果只有几个),或者转到%HUDSON_HOME%\ jobs\< projectname >目录并删除所有子目录 - 它们对应于构建.然后重新启动服务以使更改生效.


Erw*_*and 22

这是另一种选择:使用cURL删除构建.

$ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
Run Code Online (Sandbox Code Playgroud)

以上删除了作业myJob的#1到#56.

如果在Jenkins实例上启用了身份验证,则必须提供用户名和API令牌,如下所示:

$ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
Run Code Online (Sandbox Code Playgroud)

必须从/me/configureJenkins中的页面获取API令牌.只需单击"Show API Token ..."按钮即可显示用户名和API令牌.

编辑:一个可能需要更换doDeleteAlldoDelete在上面的网址,使这项工作,根据配置或使用的詹金斯的版本.


the*_*ill 9

您可以临时修改项目配置以仅保存最后1个版本,重新加载配置(应该删除旧版本),然后再次将配置设置更改为所需的值.


ort*_*t11 9

以下是如何使用Jenkins Scripting删除所有作业的所有BUILDS ......

def jobs = Jenkins.instance.projects.collect { it } 
jobs.each { job -> job.getBuilds().each { it.delete() }} 
Run Code Online (Sandbox Code Playgroud)


小智 7

这是可用的最佳选择。

Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }
Run Code Online (Sandbox Code Playgroud)

此代码将删除所有 Jenkins 作业构建历史记录。

  • 对于任何想知道如何运行上述代码的人,请转到 Jenkins Home &gt; Manage Jenkins &gt; Script Console。那里会有一个文本字段,您可以在其中输入此脚本。 (3认同)

Mar*_*nov 6

如果您想清除 MultiBranchProject(例如管道)的构建历史记录,请转到您的 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()
}
Run Code Online (Sandbox Code Playgroud)