簡體   English   中英

如何清除我的 Jenkins/Hudson 構建歷史?

[英]How do I clear my Jenkins/Hudson build history?

我最近更新了我的一個 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()

這個答案是給詹金斯的

  1. 轉到您的 Jenkins 主頁 →管理 Jenkins腳本控制台

    在此處輸入圖像描述

  2. 在那里運行以下腳本。 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()

我的帖子

如果您單擊 Manage Hudson / Reload Configuration From Disk,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頁面獲取。 只需單擊“顯示 API 令牌...”按鈕即可顯示用戶名和 API 令牌。

編輯:根據配置或使用的 Jenkins 版本,可能必須在上面的 URL 中將doDeleteAll替換為doDelete才能使其工作。

以下是如何使用 Jenkins 腳本刪除 ALL BUILDS FOR ALL JOBS……。

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

您可以臨時修改項目配置以僅保存最后 1 個構建,重新加載配置(這應該丟棄舊構建),然后再次將配置設置更改為您想要的值。

如果您想清除 MultiBranchProject 的構建歷史(例如管道),請轉到您的 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 Job 構建歷史記錄。

使用腳本控制台。

如果作業被分組,則可以使用正斜杠給它一個全名:

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”>“腳本控制台”

下面運行:

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

另一種清理構建的簡單方法是在工作結束時添加丟棄舊插件。 設置要保存的最大構建數,然后再次運行作業:

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

轉到%HUDSON_HOME%\jobs\<projectname>刪除builds目錄並刪除lastStable, lastSuccessful鏈接,並刪除nextBuildNumber文件。

完成上述步驟后,從 UI 轉到以下鏈接
Jenkins-> 管理 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)

導航到: %JENKINS_HOME%\jobs\jobName

打開文件“nextBuildNumber”並更改編號。 之后重新加載 Jenkins 配置。 注意:“nextBuildNumber”文件包含 Jenkins 將使用的下一個版本號。

我有同樣的問題,可能是這個插件可以幫助https://plugins.jenkins.io/purge-job-history

在 linux 上的 jenkins 2.293 上測試。 它將刪除所有構建日志,但不會刪除相關的構建號

cd /var/lib/jenkins/jobs
find . -name "builds" -exec rm -rf {} \;

請小心使用此命令,因為它對每個查找結果執行rm -rf 您可以先執行此操作以驗證結果是否只是您作業的builds文件夾

find . -name "builds"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM