Gần đây tôi đã cập nhật cấu hình của một trong các bản dựng hudson của mình. Lịch sử xây dựng không đồng bộ. Có cách nào để xóa lịch sử xây dựng của tôi không?
Xin vui lòng và cảm ơn bạn
Gần đây tôi đã cập nhật cấu hình của một trong các bản dựng hudson của mình. Lịch sử xây dựng không đồng bộ. Có cách nào để xóa lịch sử xây dựng của tôi không?
Xin vui lòng và cảm ơn bạn
Câu trả lời:
Nếu bạn nhấp vào Quản lý Hudson / Tải lại Cấu hình Từ Đĩa, Hudson sẽ tải lại tất cả dữ liệu lịch sử xây dựng.
Nếu dữ liệu trên đĩa bị lộn xộn, bạn sẽ cần phải chuyển đến thư mục% HUDSON_HOME% \ Jobs \ < projectname > của mình và khôi phục các thư mục xây dựng như bình thường. Sau đó tải lại dữ liệu cấu hình.
Nếu bạn chỉ đơn giản là hỏi cách xóa tất cả lịch sử bản dựng, bạn có thể xóa từng bản dựng một thông qua giao diện người dùng nếu chỉ có một vài bản hoặc truy cập thư mục% HUDSON_HOME% \ Jobs \ < projectname > và xóa tất cả các thư mục con ở đó - chúng tương ứng với các bản dựng. Sau đó, khởi động lại dịch vụ để các thay đổi có hiệu lực.
Sử dụng bảng điều khiển tập lệnh (Manage Jenkins> Script Console) và một cái gì đó tương tự như tập lệnh này để xóa hàng loạt lịch sử xây dựng của công việc https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy
Tập lệnh đó giả định rằng bạn chỉ muốn xóa một loạt các bản dựng. Để xóa tất cả các bản dựng cho một công việc nhất định, hãy sử dụng điều này (đã thử nghiệm):
// 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()
Câu trả lời này dành cho Jenkins
Truy cập trang chủ Jenkins của bạn → Quản lý Jenkins → Bảng điều khiển tập lệnh
Chạy tập lệnh sau ở đó. Thay đổi copy_folder
thànhyour project name
Mã:
def jobName = "copy_folder"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
Đây là một tùy chọn khác: xóa các bản dựng bằng cURL.
$ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
Ở trên xóa bản dựng # 1 đến # 56 cho công việc myJob.
Nếu xác thực được bật trên phiên bản Jenkins, tên người dùng và mã thông báo API phải được cung cấp như sau:
$ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
Mã thông báo API phải được tìm nạp từ /me/configure
trang trong Jenkins. Chỉ cần nhấp vào nút "Hiển thị Mã thông báo API ..." để hiển thị cả tên người dùng và mã thông báo API.
Chỉnh sửa: người ta có thể phải thay thế doDeleteAll
bằng doDelete
trong các URL ở trên để làm cho điều này hoạt động, tùy thuộc vào cấu hình hoặc phiên bản Jenkins được sử dụng.
Bạn có thể tạm thời sửa đổi cấu hình dự án để chỉ lưu 1 bản dựng cuối cùng, tải lại cấu hình (sẽ làm hỏng các bản dựng cũ), sau đó thay đổi lại cài đặt cấu hình thành giá trị mong muốn của bạn.
Nếu bạn muốn xóa lịch sử xây dựng của MultiBranchProject (ví dụ: đường dẫn), hãy truy cập trang chủ Jenkins của bạn → Quản lý Jenkins → Bảng điều khiển Tập lệnh và chạy tập lệnh sau:
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()
}
Đây là tùy chọn tốt nhất hiện có.
Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }
Mã này sẽ xóa tất cả lịch sử xây dựng Jenkins Job.
Sử dụng Bảng điều khiển Script.
Trong trường hợp các công việc được nhóm lại, bạn có thể đặt tên đầy đủ cho nó bằng dấu gạch chéo phía trước:
getItemByFullName("folder_name/job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
hoặc duyệt qua hệ thống phân cấp như thế này:
def folder = Jenkins.instance.getItem("folder_name")
def job = folder.getItem("job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
Xóa trực tiếp khỏi hệ thống tệp không an toàn. Bạn có thể chạy tập lệnh dưới đây để xóa tất cả các bản dựng khỏi tất cả các công việc (một cách đệ quy).
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)
}
}
}
Một cách dễ dàng khác để làm sạch các bản dựng là bằng cách thêm Loại bỏ Plugin Cũ vào cuối công việc của bạn. Đặt số lượng bản dựng tối đa để lưu và sau đó chạy lại công việc:
https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin
Đi tới trình %HUDSON_HOME%\jobs\<projectname>
loại bỏ builds
dir và loại bỏ lastStable, lastSuccessful
các liên kết, và loại bỏ nextBuildNumber
tệp.
Sau khi thực hiện các bước trên, hãy truy cập liên kết bên dưới từ giao diện người dùng
Jenkins-> Manage Jenkins -> Tải lại cấu hình từ Disk
Nó sẽ làm như bạn cần
Nếu sử dụng phương pháp Bảng điều khiển Tập lệnh, hãy thử sử dụng phương pháp sau để xem xét xem công việc có đang được nhóm vào các vùng chứa thư mục hay không.
def jobName = "Your Job Name"
def job = Jenkins.instance.getItemByFullName(jobName)
hoặc là
def jobName = "My Folder/Your Job Name
def job = Jenkins.instance.getItemByFullName(jobName)