2011-11-03 29 views
29

Tôi đang sử dụng Jenkins để thực hiện các tác vụ hàng ngày với các dự án của mình, nhưng mỗi lần thực hiện, Jenkins lưu trữ một thư mục 20MB trong PROJECT_HOME/builds, vì vậy sau nhiều lần thực hiện, không gian trong đĩa của mọi dự án là rất lớn (10GB cho một số nhiệm vụ của Jenkins).Không gian trống trong Jenkins xóa thư mục 'builds'

Nó không phải là rất quan trọng đối với tôi để lưu trữ kết quả của việc thực hiện trước đó, vì vậy những gì tôi muốn biết là nếu tồn tại một cách để nói Jenkins không lưu trữ thông tin đó.

Có ai biết cách tránh Jenkins lưu trữ kết quả thực hiện cũ không?

+0

http://stackoverflow.com/a/42220002/6549532 –

Trả lời

39

Nếu bạn truy cập trang cấu hình của dự án, bạn sẽ thấy hộp kiểm có nhãn "Hủy các bản dựng cũ". Bật tính năng này cho phép bạn chỉ định cả số ngày để giữ lại các bản dựng và số lượng bản dựng tối đa cần giữ.

+0

Trong trường hợp của tôi, Tôi thực sự không thể thay đổi cấu hình vì thiếu dung lượng trống, vì vậy tôi phải vào hệ thống và xóa các bản dựng cũ theo cách thủ công. – ThomasW

+0

BTW, tôi chưa sử dụng cái này, nhưng tôi chỉ tìm thấy Plugin Cấu hình Slicing cho phép bạn chỉ định # bản dựng để giữ (vv) trên tất cả các bản dựng trên máy Jenkins, từ một địa điểm https: // wiki. jenkins-ci.org/display/JENKINS/Cấu hình + Cắt + Plugin –

+1

@jwernerny Khi bạn đã đánh dấu vào đó, làm cách nào để ép buộc nó thực hiện thao tác hủy? – Carlos

5

Nếu như tôi, bạn chỉ nhận thấy bạn đã hết dung lượng khi bạn gặp lỗi xây dựng thì bạn sẽ muốn xóa một số bản dựng cũ để giải phóng một số không gian. Đầu tiên thay đổi cấu hình để loại bỏ các bản dựng cũ như jwernerny được đề cập, sau đó bạn sẽ cần phải bắt đầu một bản dựng để kích hoạt dọn dẹp các bản dựng cũ hơn. Việc xây dựng có thể thất bại một lần nữa do thiếu không gian trống nhưng việc dọn dẹp sau khi xây dựng nên chạy và loại bỏ các phiên bản cũ hơn.

20

Nếu bạn muốn chắc Jenkins loại bỏ tất cả cũ được xây dựng mà không cần phải chạy lại tất cả các bản xây dựng sau đó bạn có thể chạy bit này của kịch bản lấy từ http://scriptlerweb.appspot.com/script/show/85001:

def jobs = Hudson.instance.items 

jobs.findAll{it.logRotator}.each { 
    println("JOB : "+ it.name) 
    try { 
    println(it.logRotator.perform(it)) 
    } catch (Exception e) { 
    println("It didn't work: "+ e) 
    } 
} 

Lưu ý: để chạy các script trên Jenkins bạn có thể đi tới bảng điều khiển tập lệnh http://<server>/jenkins/script. Thông tin khác trên bảng điều khiển tại đây: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Script+Console

-1

Thực ra tôi nghĩ rằng không thực sự tốt khi tự xóa các thư mục.

Hãy để chuyên gia làm. Bạn đã thử Discard Old Builds Plugin chưa?

"Bạn có thể cấu hình như thế nào để loại bỏ được xây dựng một cách chi tiết hơn mặc định 'Huỷ Cũ Xây dựng' chức năng. Khác với # bản xây dựng và ngày, bạn có thể chỉ xây dựng tư cách để loại bỏ/giữ. Đối cũ xây dựng , bạn có thể định cấu hình khoảng thời gian để giữ các bản dựng (một lần trong một tháng, một lần trong số mười bản dựng ...). Bạn cũng có thể sử dụng kích thước tệp nhật ký để quyết định xóa một phiên bản cũ xây dựng " ".

1

Đến Cấu hình trong dự án của bạn.

1

Từ Jenkins Scriptler console chạy kịch bản dưới đây groovy để xóa tất cả các bản xây dựng của công việc được liệt kê dưới một cái nhìn

import jenkins.model.Jenkins 

hudson.model.Hudson.instance.getView('<ViewName>').items.each() { 
    println it.fullDisplayName 


def jobname=it.fullDisplayName 
def item = hudson.model.Hudson.instance.getItem(jobname) 
def build = item.getLastBuild() 
if (item.getLastBuild() !=null) 
    { 
Jenkins.instance.getItemByFullName(jobname).builds.findAll { it.number <= build.getNumber() }.each { it.delete() } 

} 
} 
Các vấn đề liên quan