[英]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()
這個答案是給詹金斯的
代碼:
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.