首页 文章

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

提问于
浏览
73

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

谢谢,麻烦您了

13 回答

  • 45

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

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

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

  • 0

    使用脚本控制台(管理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()
    
  • 0

    This answer is for Jenkins

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

    Enter image description here

    • 在那里运行以下脚本 . 将 copy_folder 更改为 your project name

    码:

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

    My post

  • 0

    这是另一种选择:使用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
    

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

    编辑:可能必须在上面的URL中用 doDelete 替换 doDeleteAll 才能使其工作,具体取决于所使用的Jenkins的配置或版本 .

  • 9

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

  • 8

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

    def jobs = Jenkins.instance.projects.collect { it } 
    jobs.each { job -> job.getBuilds().each { it.delete() }}
    
  • 91

    这是最好的选择 .

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

    This code will delete all Jenkins Job build history.

  • 1

    清理构建的另一种简单方法是在作业结束时添加Discard Old Plugin . 设置要保存的最大构建数,然后再次运行作业:

    https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin

  • 2

    转到 %HUDSON_HOME%\jobs\<projectname> 删除 builds dir并删除 lastStable, lastSuccessful 链接,然后删除 nextBuildNumber 文件 .

    完成上述步骤后,从UI进入以下链接
    Jenkins->管理Jenkins - >从磁盘重新加载配置

    它会按你的需要做

  • 1

    如果使用脚本控制台方法,请尝试使用以下内容,以考虑是否将作业分组到文件夹容器中 .

    def jobName = "Your Job Name"
    def job = Jenkins.instance.getItemByFullName(jobName)
    

    要么

    def jobName = "My Folder/Your Job Name
    def job = Jenkins.instance.getItemByFullName(jobName)
    
  • 60

    导航至: %JENKINS_HOME%\jobs\jobName

    打开文件“nextBuildNumber”并更改数字 . 之后重新加载Jenkins配置 . 注意:“nextBuildNumber”文件包含Jenkins将使用的下一个构建no .

  • 1

    使用脚本控制台 .

    如果作业已分组,则可以使用正斜杠为其指定全名:

    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()
    
  • 19

    如果要清除MultiBranchProject的构建历史记录(例如管道),请转到Jenkins主页→Manage Jenkins→Script Console并运行以下脚本:

    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()
    }
    

相关问题