Antworten:
Es gibt eine Möglichkeit, den Arbeitsbereich in Jenkins zu bereinigen. Sie können den Arbeitsbereich vor oder nach dem Erstellen bereinigen.
Installieren Sie zunächst das Workspace Cleanup Plugin .
So bereinigen Sie den Arbeitsbereich vor dem Erstellen: Aktivieren Sie unter Build-Umgebung das Kontrollkästchen Arbeitsbereich vor dem Start des Builds löschen.
So bereinigen Sie den Arbeitsbereich nach dem Build: Unter dem Titel Post-Build - Aktionen wählen Löschen Arbeitsbereich , wenn Build erfolgt aus dem Add Post-Build - Aktionen im Dropdown - Menü.
Wenn Sie es manuell bereinigen möchten, gibt es für mich mit meiner Version von Jenkins (anscheinend wurde kein zusätzliches Plugin installiert, aber wer weiß) einen Link "Arbeitsbereich" in der linken Spalte. Klicken Sie auf Ihr Projekt. dann auf "Arbeitsbereich", dann erscheint ein Link "Aktuellen Arbeitsbereich löschen" darunter in der linken Spalte.
Neben den oben genannten Lösungen gibt es einen "GEMEINSAMEN" Weg - den größten Speicherplatzverbraucher direkt vom Linux-Computer zu löschen. Sie können die folgenden Schritte ausführen:
Wenn Sie ls -lart verwenden, um auch versteckte Ordner aufzulisten, wird die Jenkins-Installation normalerweise in .jenkins / folder abgelegt
[xxxxx ~]$ ls -lart drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
Use df -h
um Speicherplatz auf hoher Ebene anzuzeigen
du -sh ./*/
um den Gesamtspeicher für jeden Unterordner im aktuellen Pfad aufzulisten.
du -a /etc/ | sort -n -r | head -n 10
listet die Top 10 Verzeichnisse auf, die Speicherplatz in / etc / verbrauchen
Normalerweise kann der Ordner ./job/ oder der Ordner ./workspace/ der größte Ordner sein. Bitte gehen Sie hinein und löschen Sie die Basis nach Bedarf (NICHT den gesamten Ordner löschen).
rm -rf theFolderToDelete
Plugin zur Bereinigung des Arbeitsbereichs
In Jenkins Datei hinzufügen
cleanWs()
Dadurch wird der Arbeitsbereich nach Abschluss des Builds gelöscht
cleanWs()
war aber auf der Plugin-Landingpage nicht als Syntax zum Hinzufügen zu meinem Plugin vorhanden Jenkinsfile
.
WICHTIG: Es ist sicher, den Arbeitsbereich für einen bestimmten Jenkins-Job zu entfernen, solange der Job gerade nicht ausgeführt wird!
HINWEIS: Ich gehe davon aus, dass Ihr $JENKINS_HOME
Standardwert festgelegt ist:/var/jenkins_home
.
rm -rf /var/jenkins_home/workspaces/<workspace>
rm -rf /var/jenkins_home/workspaces/*
Dieser verwendet grep, um eine Whitelist zu erstellen:
ls /var/jenkins_home/workspace \
| grep -v -E '(job-to-skip|another-job-to-skip)$' \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Dieser verwendet du und sort, um Arbeitsbereiche in der Reihenfolge vom größten zum kleinsten aufzulisten. Dann greift es mit dem Kopf nach den ersten 10:
du -d 1 /var/jenkins_home/workspace \
| sort -n -r \
| head -n 10 \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Sie können das folgende Skript in der Konsole " Jenkins verwalten → Skripte" ausführen, um die Arbeitsbereiche aller Jobs auf einmal zu löschen. Wir haben dies getan, um Speicherplatz im Dateisystem zu bereinigen.
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")
}
}
darf daher nicht kommentieren:
Die Antwort von Upen funktioniert einwandfrei, aber nicht, wenn Sie Jenkins Pipeline Jobs mit Freestyle Jobs gemischt haben. Es gibt keine Methode wie DoWipeWorkspace für Pipeline-Jobs. Also habe ich das Skript geändert, um diese zu überspringen:
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")
}
}
Bei Bedarf können Sie auch nach Jobnamen filtern:
item.getDisplayName().toLowerCase().contains("release")
Sie müssen dieses Plugin installieren, bevor die oben genannten Optionen angezeigt werden
Plugin zur Bereinigung des Arbeitsbereichs
Dieses Plugin fügt allen Jobkonfigurationen das Kontrollkästchen hinzu, damit Sie den gesamten Arbeitsbereich löschen können, bevor Schritte (einschließlich Quellcodeverwaltung) ausgeführt werden
Dies ist nützlich, um sicherzustellen, dass Sie immer an einem bekannten Punkt beginnen, um sicherzustellen, dass Ihre Erstellung ausgeführt wird
Wenn Sie nur ein Verzeichnis (oder eine Datei) entfernen möchten, können Sie mit Groovy und Jenkins verwalten → Scripts Console ein Skript ausführen, das es entfernt.
Sie können die Dateien beispielsweise mit folgenden Elementen anzeigen:
dh = new File('./bitnami/jenkins/jenkins_home/workspace/jobname/folder')
dh.eachFile {
println(it)
}
Wenn Sie den Ordner haben, in dem Sie ihn löschen möchten dh
, können Sie einfach den nächsten Code anhängen:
dh.deleteDir()
Und es wird gelöscht.
Hinweis: Der im Beispiel gezeigte Pfad gilt für eine Bitnami Jenkins-Installation. Ihr Pfad kann unterschiedlich sein.
Es gibt eine Option, um dies zu tun. Konfigurieren -> Aktionen nach dem Erstellen
Die Option ist standardmäßig mindestens in Jenkins Version 2.236 verfügbar