ฉันเพิ่งอัปเดตการกำหนดค่าของฮัดสันบิลด์หนึ่งของฉัน ประวัติการสร้างไม่ตรงกัน มีวิธีล้างประวัติการสร้างของฉันหรือไม่?
กรุณาและขอบคุณ
ฉันเพิ่งอัปเดตการกำหนดค่าของฮัดสันบิลด์หนึ่งของฉัน ประวัติการสร้างไม่ตรงกัน มีวิธีล้างประวัติการสร้างของฉันหรือไม่?
กรุณาและขอบคุณ
คำตอบ:
หากคุณคลิก Manage Hudson / Reload Configuration From Disk ฮัดสันจะโหลดข้อมูลประวัติการสร้างทั้งหมดซ้ำ
หากข้อมูลในดิสก์เกิดความสับสนคุณจะต้องไปที่ไดเร็กทอรี% HUDSON_HOME% \ jobs \ < projectname > และกู้คืนไดเร็กทอรีบิลด์ตามที่ควรจะเป็น จากนั้นโหลดข้อมูลการกำหนดค่าใหม่
หากคุณเพียงแค่ถามวิธีลบประวัติการสร้างทั้งหมดคุณสามารถลบบิวด์ทีละรายการผ่าน UI ได้หากมีเพียงไม่กี่รายการหรือไปที่ไดเร็กทอรี% HUDSON_HOME% \ jobs \ < projectname > และลบทั้งหมด ไดเรกทอรีย่อยที่นั่น - สอดคล้องกับการสร้าง หลังจากนั้นเริ่มบริการใหม่เพื่อให้การเปลี่ยนแปลงมีผล
ใช้คอนโซลสคริปต์ (Manage Jenkins> Script Console) และสคริปต์นี้เพื่อลบประวัติการสร้างงานจำนวนมาก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()
คำตอบนี้สำหรับเจนกินส์
ไปที่โฮมเพจ Jenkins ของคุณ→ จัดการ Jenkins → Script Console
เรียกใช้สคริปต์ต่อไปนี้ที่นั่น เปลี่ยน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()
นี่คืออีกทางเลือกหนึ่ง: ลบงานสร้างด้วย cURL
$ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
ข้างต้นจะลบ build # 1 ถึง # 56 สำหรับ job myJob
หากเปิดใช้งานการตรวจสอบสิทธิ์บนอินสแตนซ์ Jenkins ต้องระบุชื่อผู้ใช้และโทเค็น API ดังนี้:
$ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
ต้องดึงโทเค็น API จาก/me/configure
หน้าใน Jenkins เพียงคลิกที่ปุ่ม "Show API Token ... " เพื่อแสดงทั้งชื่อผู้ใช้และโทเค็น API
แก้ไข: อาจต้องแทนที่doDeleteAll
ด้วยdoDelete
ใน URL ด้านบนเพื่อให้สามารถใช้งานได้ขึ้นอยู่กับการกำหนดค่าหรือเวอร์ชันของ Jenkins ที่ใช้
นี่คือวิธีการลบ BUILDS FOR ALL JOBS ...... โดยใช้ Jenkins Scripting
def jobs = Jenkins.instance.projects.collect { it }
jobs.each { job -> job.getBuilds().each { it.delete() }}
คุณสามารถแก้ไขการกำหนดค่าโปรเจ็กต์ชั่วคราวเพื่อบันทึกเฉพาะ 1 บิลด์สุดท้ายโหลดการกำหนดค่าใหม่ (ซึ่งควรทิ้งบิลด์เก่า) จากนั้นเปลี่ยนการตั้งค่าคอนฟิกอีกครั้งเป็นค่าที่คุณต้องการ
หากคุณต้องการล้างประวัติการสร้างของ MultiBranchProject (เช่นไปป์ไลน์) ให้ไปที่โฮมเพจ Jenkins →จัดการ 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()
}
อันนี้เป็นตัวเลือกที่ดีที่สุด
Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }
โค้ดนี้จะลบประวัติการสร้าง Jenkins Job ทั้งหมด
ใช้ Script Console
ในกรณีที่มีการจัดกลุ่มงานคุณสามารถตั้งชื่อเต็มโดยใช้เครื่องหมายทับ:
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)
}
}
}
อีกวิธีง่ายๆในการทำความสะอาดงานสร้างคือการเพิ่ม Discard Old Plugin ในตอนท้ายของงานของคุณ กำหนดจำนวนบิลด์สูงสุดที่จะบันทึกแล้วรันงานอีกครั้ง:
https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin
ไปที่%HUDSON_HOME%\jobs\<projectname>
ลบbuilds
dir และลบ lastStable, lastSuccessful
ลิงก์และลบnextBuildNumber
ไฟล์
หลังจากทำตามขั้นตอนข้างต้นแล้วให้ไปที่ลิงค์ด้านล่างจาก UI
Jenkins-> Manage Jenkins -> โหลดการกำหนดค่าใหม่จากดิสก์
มันจะทำตามที่คุณต้องการ
หากใช้เมธอด Script Console ให้ลองใช้สิ่งต่อไปนี้แทนเพื่อพิจารณาว่างานถูกจัดกลุ่มไว้ในโฟลเดอร์คอนเทนเนอร์หรือไม่
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" มีหมายเลขบิลด์ถัดไปที่เจนกินส์จะใช้