Câu trả lời:
Có một cách để dọn dẹp không gian làm việc trong Jenkins. Bạn có thể dọn dẹp không gian làm việc trước khi xây dựng hoặc sau khi xây dựng.
Đầu tiên, hãy cài đặt Plugin làm sạch không gian làm việc .
Để dọn dẹp không gian làm việc trước khi xây dựng: Trong Môi trường xây dựng, hãy chọn hộp cho biết Xóa không gian làm việc trước khi bắt đầu xây dựng.
Để dọn dẹp không gian làm việc sau khi xây dựng: Dưới tiêu đề Hành động sau khi xây dựng, chọn Xóa không gian làm việc khi quá trình xây dựng hoàn tất từ trình đơn thả xuống Thêm Hành động sau khi xây dựng .
Nếu bạn muốn làm sạch nó theo cách thủ công, đối với tôi với phiên bản jenkins của tôi (có vẻ như không cần cài đặt thêm plugin, nhưng ai biết được), có một liên kết "không gian làm việc" ở cột bên trái, hãy nhấp vào dự án của bạn, sau đó trên "không gian làm việc", sau đó liên kết "Xóa không gian làm việc hiện tại" xuất hiện bên dưới nó ở cột bên trái.
Bên cạnh các giải pháp trên, có một cách "THÔNG DỤNG" hơn - xóa trực tiếp người tiêu dùng không gian lớn nhất khỏi máy Linux. Bạn có thể làm theo các bước sau:
Sử dụng ls -lart để liệt kê thư mục ẩn cũng được, thông thường cài đặt jenkin được đặt trong thư mục .jenkins /
[xxxxx ~]$ ls -lart drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
Use df -h
để hiển thị dung lượng đĩa ở mức cao
du -sh ./*/
để liệt kê tổng bộ nhớ cho từng thư mục con trong đường dẫn hiện tại.
du -a /etc/ | sort -n -r | head -n 10
sẽ liệt kê 10 thư mục hàng đầu ăn không gian đĩa trong / etc /
Thông thường, thư mục ./job/ hoặc ./workspace/ có thể là thư mục lớn nhất. Vui lòng vào bên trong và xóa căn cứ mà bạn cần (KHÔNG xóa toàn bộ thư mục).
rm -rf theFolderToDelete
Plugin dọn dẹp không gian làm việc
Trong tệp Jenkins thêm
cleanWs()
Thao tác này sẽ xóa không gian làm việc sau khi xây dựng xong
cleanWs()
không có trên trang đích của plugin dưới dạng cú pháp để thêm vào của tôi Jenkinsfile
.
QUAN TRỌNG: Có thể an toàn xóa không gian làm việc cho một công việc Jenkins nhất định miễn là công việc hiện không chạy!
Chú ý: Tôi giả định của bạn $JENKINS_HOME
được thiết lập để mặc định: /var/jenkins_home
.
rm -rf /var/jenkins_home/workspaces/<workspace>
rm -rf /var/jenkins_home/workspaces/*
Cái này sử dụng grep để tạo một danh sách trắng:
ls /var/jenkins_home/workspace \
| grep -v -E '(job-to-skip|another-job-to-skip)$' \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Cái này sử dụng du và sort để liệt kê các không gian làm việc theo thứ tự lớn nhất đến nhỏ nhất. Sau đó, nó sử dụng đầu để lấy 10 đầu tiên:
du -d 1 /var/jenkins_home/workspace \
| sort -n -r \
| head -n 10 \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Bạn có thể chạy tập lệnh bên dưới trong Bảng điều khiển Quản lý Jenkins → Tập lệnh để xóa không gian làm việc của tất cả các công việc cùng một lúc. Chúng tôi đã làm điều này để dọn dẹp dung lượng trên hệ thống tệp.
import hudson.model.*
// For each project
for(item in Hudson.instance.items) {
// check that job is not building
if(!item.isBuilding()) {
println("Wiping out workspace of job "+item.name)
item.doDoWipeOutWorkspace()
}
else {
println("Skipping job "+item.name+", currently building")
}
}
không được phép bình luận, do đó:
Câu trả lời từ Upen chỉ hoạt động tốt, nhưng không nếu bạn có Jenkins Pipeline Jobs kết hợp với Freestyle Jobs. Không có Phương pháp nào như DoWipeWorkspace trên Pipeline Jobs. Vì vậy, tôi đã sửa đổi Tập lệnh để bỏ qua:
import hudson.model.*
import org.jenkinsci.plugins.workflow.job.WorkflowJob
// For each project
for(item in Hudson.instance.items) {
// check that job is not building
if(!item.isBuilding() && !(item instanceof WorkflowJob))
{
println("Wiping out workspace of job "+item.name)
item.doDoWipeOutWorkspace()
}
else {
println("Skipping job "+item.name+", currently building")
}
}
bạn cũng có thể lọc theo Tên công việc nếu được yêu cầu:
item.getDisplayName().toLowerCase().contains("release")
Bạn sẽ cần cài đặt plugin này trước khi các tùy chọn được đề cập ở trên xuất hiện
Plugin dọn dẹp không gian làm việc
Plugin này thêm hộp kiểm vào tất cả các cấu hình công việc để cho phép bạn xóa toàn bộ không gian làm việc trước khi chạy bất kỳ bước nào (bao gồm kiểm soát nguồn)
Điều này hữu ích để đảm bảo bạn luôn bắt đầu từ một điểm đã biết để đảm bảo cách bạn xây dựng sẽ chạy
Nếu bạn chỉ muốn xóa một dir (hoặc tệp), bạn có thể sử dụng Groovy và Manage Jenkins → Scripts Console chạy một tập lệnh để xóa nó.
Ví dụ: bạn có thể xem các tệp với:
dh = new File('./bitnami/jenkins/jenkins_home/workspace/jobname/folder')
dh.eachFile {
println(it)
}
Và sau đó, khi bạn có thư mục muốn xóa dh
, bạn chỉ cần nối mã tiếp theo:
dh.deleteDir()
Và nó sẽ bị xóa.
Lưu ý: Đường dẫn hiển thị trong ví dụ dành cho cài đặt Bitnami Jenkins, đường dẫn của bạn có thể khác.
Có một tùy chọn để làm điều đó. Định cấu hình -> Hành động sau xây dựng Tùy
chọn này có mặc định ít nhất là trong phiên bản Jenkins 2.236