Jenkins'teki çalışma alanını nasıl temizleyebilirim? AccuRev
Sürüm kontrol aracı olarak kullanıyorum .
freestyle
Jenkins'te projeler yarattım .
Yanıtlar:
Jenkins'te çalışma alanını temizlemenin bir yolu var. Çalışma alanını oluşturmadan önce veya oluşturduktan sonra temizleyebilirsiniz.
İlk olarak, Workspace Cleanup Plugin'i yükleyin .
Oluşturmadan önce çalışma alanını temizlemek için: Derleme Ortamı altında , derleme başlamadan önce çalışma alanını sil yazan kutuyu işaretleyin .
Yapı sonra çalışma alanını temizlemek için: başlığı altında Sonrası inşa Eylemler seçmek inşa bittiğinde Sil çalışma alanına gelen Sonrası inşa Eylemler Ekle menüsü açılır.
Benim için jenkins sürümümle manuel olarak temizlemek istiyorsanız (fazladan bir eklentiye ihtiyaç duyuyor gibi görünmüyordu, ancak kim bilir), sol sütunda bir "çalışma alanı" bağlantısı var, projenize tıklayın, ardından "çalışma alanı" üzerinde, sol taraftaki sütunun altında "Mevcut çalışma alanını sil" bağlantısı görünür.
Yukarıdaki çözümlerin yanı sıra, daha "ORTAK" bir yol var - en büyük alan tüketicisini Linux makinesinden doğrudan silin. Aşağıdaki adımları takip edebilirsiniz:
Gizli klasörü de listelemek için ls -lart kullanarak, normalde jenkin kurulumu .jenkins / klasörüne yerleştirilir.
[xxxxx ~]$ ls -lart drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
Use df -h
Disk alanını yüksek seviyede göstermek için
du -sh ./*/
geçerli yoldaki her alt klasör için toplam belleği listelemek için.
du -a /etc/ | sort -n -r | head -n 10
/ etc / dizininde disk alanı yiyen ilk 10 dizini listeler
Normalde ./job/ klasörü veya ./workspace/ klasörü en büyük klasör olabilir. Lütfen içeri girin ve ihtiyacınız olan tabanı silin (tüm klasörü SİLMEYİN).
rm -rf theFolderToDelete
ÖNEMLİ: Belirli bir Jenkins işi için çalışma alanını, iş şu anda çalışmadığı sürece kaldırmak güvenlidir!
NOT: Ben senin varsayıyorum $JENKINS_HOME
varsayılan olarak ayarlanır: /var/jenkins_home
.
rm -rf /var/jenkins_home/workspaces/<workspace>
rm -rf /var/jenkins_home/workspaces/*
Bu, bir beyaz liste oluşturmak için grep kullanır:
ls /var/jenkins_home/workspace \
| grep -v -E '(job-to-skip|another-job-to-skip)$' \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Bu, çalışma alanlarını en büyükten en küçüğe doğru sıralamak için du ve sort kullanır. Ardından, ilk 10'u yakalamak için kafayı kullanır:
du -d 1 /var/jenkins_home/workspace \
| sort -n -r \
| head -n 10 \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Çalışma Alanı Temizleme Eklentisi
Jenkins dosyasına ekle
cleanWs()
Bu, derleme tamamlandıktan sonra çalışma alanını silecek
cleanWs()
eklenti açılış sayfasında söz dizimi olarak bulunmadım Jenkinsfile
.
Tüm işlerin çalışma alanlarını tek seferde silmek için, Jenkins Yönet → Komut Dosyaları Konsolunda aşağıdaki komut dosyasını çalıştırabilirsiniz . Bunu dosya sistemindeki alanı temizlemek için yaptık.
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")
}
}
yorum yapmaya izin verilmiyor, bu nedenle:
Upen'ın cevabı gayet iyi çalışıyor, ancak Jenkins Pipeline Jobs'u Freestyle Jobs ile karıştırmışsanız değil. Ardışık Düzen İşlerinde DoWipeWorkspace gibi bir Yöntem yoktur. Ben de bunları atlamak için Komut Dosyasını değiştirdim:
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")
}
}
ayrıca gerekirse İş Adlarına göre de filtreleyebilirsiniz:
item.getDisplayName().toLowerCase().contains("release")
Yukarıda belirtilen seçenekler görünmeden önce bu eklentiyi kurmanız gerekecek
Çalışma Alanı Temizleme Eklentisi
Bu eklenti, herhangi bir adım (kaynak kontrolü dahil) çalıştırılmadan önce tüm çalışma alanını silmenize izin vermek için tüm iş yapılandırmalarına onay kutusunu ekler.
Bu, derlemenizin nasıl çalışacağını garanti etmek için her zaman bilinen bir noktadan başladığınızdan emin olmak için kullanışlıdır.
Bunu yapmak için bir seçenek var. Yapılandır -> Derleme Sonrası Eylemler
Seçenek varsayılan olarak en azından Jenkins 2.236 sürümünde gelir
Yalnızca bir dizini (veya dosyayı) kaldırmak istiyorsanız, Groovy ve Manage Jenkins → Scripts Console'u kullanabilirsiniz, onu kaldıran bir komut dosyası çalıştırın.
Örneğin, dosyalara şu şekilde bakabilirsiniz:
dh = new File('./bitnami/jenkins/jenkins_home/workspace/jobname/folder')
dh.eachFile {
println(it)
}
Ve sonra, içinde silmek istediğiniz klasöre sahip olduğunuzda dh
, bir sonraki kodu ekleyebilirsiniz:
dh.deleteDir()
Ve silinecek.
Not: Örnekte gösterilen yol bir Bitnami Jenkins kurulumu içindir, sizinki farklı olabilir.