Jawaban:
Ada cara untuk membersihkan ruang kerja di Jenkins. Anda dapat membersihkan ruang kerja sebelum membangun atau setelah membangun.
Pertama, instal Plugin Pembersihan Ruang Kerja .
Untuk membersihkan ruang kerja sebelum build: Di bawah Build Environment, centang kotak yang mengatakan Hapus ruang kerja sebelum build dimulai.
Untuk membersihkan ruang kerja setelah build: Di bawah judul Post-build Actions pilih Delete workspace ketika build selesai dari menu drop-down Add Post-build Actions .
Jika Anda ingin membersihkannya secara manual, bagi saya dengan versi jenkins saya (sepertinya tidak perlu plugin tambahan terpasang, tapi siapa tahu), ada tautan "ruang kerja" di kolom kiri, klik proyek Anda, lalu di "ruang kerja", lalu tautan "Hapus ruang kerja saat ini" muncul di bawahnya di kolom sebelah kiri.
Selain solusi di atas, ada cara yang lebih "UMUM" - langsung menghapus pengguna ruang terbesar dari mesin Linux. Anda dapat mengikuti langkah-langkah di bawah ini:
Menggunakan ls -lart untuk menampilkan folder tersembunyi juga, biasanya instalasi jenkin ditempatkan di folder .jenkins /
[xxxxx ~]$ ls -lart drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
Use df -h
untuk menampilkan ruang Disk di level tinggi
du -sh ./*/
untuk mencantumkan total memori untuk setiap subfolder di jalur saat ini.
du -a /etc/ | sort -n -r | head -n 10
akan mencantumkan 10 direktori teratas yang memakan ruang disk di / etc /
Biasanya folder ./job/ atau ./workspace/ folder bisa menjadi folder terbesar. Silakan masuk ke dalam dan hapus berdasarkan kebutuhan Anda (JANGAN hapus seluruh folder).
rm -rf theFolderToDelete
Plugin Pembersihan Ruang Kerja
Dalam file Jenkins tambahkan
cleanWs()
Ini akan menghapus ruang kerja setelah build selesai
cleanWs()
tidak ada di halaman landing plugin sebagai sintaks untuk ditambahkan ke my Jenkinsfile
.
PENTING: Aman untuk menghapus ruang kerja untuk pekerjaan Jenkins tertentu selama pekerjaan tersebut tidak sedang berjalan!
CATATAN: Saya mengasumsikan Anda $JENKINS_HOME
diatur ke default: /var/jenkins_home
.
rm -rf /var/jenkins_home/workspaces/<workspace>
rm -rf /var/jenkins_home/workspaces/*
Yang ini menggunakan grep untuk membuat daftar putih:
ls /var/jenkins_home/workspace \
| grep -v -E '(job-to-skip|another-job-to-skip)$' \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Yang ini menggunakan du dan sort untuk mencantumkan ruang kerja dalam urutan dari yang terbesar ke terkecil. Kemudian, menggunakan head untuk mengambil 10 yang pertama:
du -d 1 /var/jenkins_home/workspace \
| sort -n -r \
| head -n 10 \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Anda dapat menjalankan skrip di bawah ini di Kelola Jenkins → Konsol Skrip untuk menghapus ruang kerja semua pekerjaan sekaligus. Kami melakukan ini untuk membersihkan ruang pada sistem file.
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")
}
}
tidak diperbolehkan berkomentar, oleh karena itu:
Jawaban dari Upen berfungsi dengan baik, tetapi tidak jika Anda memiliki Jenkins Pipeline Jobs yang dicampur dengan Freestyle Jobs. Tidak ada Metode seperti DoWipeWorkspace di Pekerjaan Pipeline. Jadi saya memodifikasi Script untuk melewatkannya:
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")
}
}
Anda juga dapat memfilter menurut Nama Pekerjaan jika diperlukan:
item.getDisplayName().toLowerCase().contains("release")
Anda perlu menginstal plugin ini sebelum opsi yang disebutkan di atas muncul
Plugin Pembersihan Ruang Kerja
Plugin ini menambahkan kotak centang ke semua konfigurasi pekerjaan untuk memungkinkan Anda menghapus seluruh ruang kerja sebelum langkah apa pun (termasuk kontrol sumber) dijalankan
Ini berguna untuk memastikan Anda selalu memulai dari titik yang diketahui untuk menjamin bagaimana build Anda akan berjalan
Jika Anda ingin menghapus satu dir (atau file), Anda dapat menggunakan Groovy dan Kelola Jenkins → Scripts Console menjalankan skrip yang menghapusnya.
Misalnya, Anda dapat melihat file dengan:
dh = new File('./bitnami/jenkins/jenkins_home/workspace/jobname/folder')
dh.eachFile {
println(it)
}
Dan kemudian, ketika Anda memiliki folder yang ingin Anda hapus dh
, Anda cukup menambahkan kode berikutnya:
dh.deleteDir()
Dan itu akan dihapus.
Catatan: Jalur yang ditunjukkan dalam contoh adalah untuk instalasi Bitnami Jenkins, jalur Anda mungkin berbeda.
Ada opsi untuk melakukannya. Konfigurasi -> Tindakan Pasca-build
Opsi ini muncul secara default setidaknya di Jenkins versi 2.236