Risposte:
C'è un modo per pulire l'area di lavoro in Jenkins. Puoi pulire l'area di lavoro prima o dopo la compilazione.
Innanzitutto, installa il plug-in Workspace Cleanup .
Per pulire lo spazio di lavoro prima della compilazione: in Ambiente di compilazione , seleziona la casella che dice Elimina spazio di lavoro prima dell'avvio della compilazione.
Per ripulire lo spazio di lavoro dopo la creazione: Sotto l'intestazione Azioni post-compilazione selezionare Elimina spazio di lavoro al termine della compilazione dal menu a discesa Aggiungi azioni post-compilazione .
Se vuoi ripulirlo manualmente, per me con la mia versione di jenkins (non sembrava aver bisogno di un plug-in aggiuntivo installato, ma chi lo sa), c'è un link "spazio di lavoro" nella colonna di sinistra, fai clic sul tuo progetto, quindi su "area di lavoro", quindi un collegamento "Cancella spazio di lavoro corrente" appare sotto di esso sulla colonna di sinistra.
Oltre alle soluzioni di cui sopra, c'è un modo più "COMUNE": eliminare direttamente il consumatore di spazio più grande dalla macchina Linux. Puoi seguire i passaggi seguenti:
Usando ls -lart per elencare anche la cartella nascosta, normalmente l'installazione di jenkin viene posizionata nella cartella .jenkins /
[xxxxx ~]$ ls -lart drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
Use df -h
per mostrare lo spazio su disco ad alto livello
du -sh ./*/
per elencare la memoria totale per ogni sottocartella nel percorso corrente.
du -a /etc/ | sort -n -r | head -n 10
elencherà le prime 10 directory che consumano spazio su disco in / etc /
Normalmente ./job/ cartella o ./workspace/ può essere la cartella più grande. Entra ed elimina la base di cui hai bisogno (NON eliminare l'intera cartella).
rm -rf theFolderToDelete
Plugin di pulizia dell'area di lavoro
Nel file Jenkins aggiungi
cleanWs()
Ciò eliminerà l'area di lavoro al termine della compilazione
cleanWs()
non era presente nella pagina di destinazione del plug-in come sintassi da aggiungere al mio file Jenkinsfile
.
IMPORTANTE: è possibile rimuovere l'area di lavoro per un determinato lavoro Jenkins fintanto che il lavoro non è attualmente in esecuzione!
NOTA: presumo che tu $JENKINS_HOME
sia impostato sul valore predefinito:/var/jenkins_home
.
rm -rf /var/jenkins_home/workspaces/<workspace>
rm -rf /var/jenkins_home/workspaces/*
Questo usa grep per creare una whitelist:
ls /var/jenkins_home/workspace \
| grep -v -E '(job-to-skip|another-job-to-skip)$' \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Questo utilizza du e sort per elencare gli spazi di lavoro in ordine dal più grande al più piccolo. Quindi, usa la testa per afferrare i primi 10:
du -d 1 /var/jenkins_home/workspace \
| sort -n -r \
| head -n 10 \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
È possibile eseguire lo script seguente nella console Gestisci Jenkins → Script per eliminare gli spazi di lavoro di tutti i lavori in un colpo solo. Lo abbiamo fatto per liberare spazio sul file system.
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")
}
}
non è consentito commentare, quindi:
La risposta di Upen funziona bene, ma non se hai Jenkins Pipeline Jobs mescolato con Freestyle Jobs. Non esiste un metodo come DoWipeWorkspace sui processi di pipeline. Quindi ho modificato lo script per saltare quelli:
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")
}
}
puoi anche filtrare in base ai nomi dei lavori, se necessario:
item.getDisplayName().toLowerCase().contains("release")
Dovrai installare questo plugin prima che vengano visualizzate le opzioni sopra menzionate
Plugin di pulizia dell'area di lavoro
Questo plugin aggiunge la casella di controllo a tutte le configurazioni del lavoro per consentire di eliminare l'intero spazio di lavoro prima di eseguire qualsiasi passaggio (incluso il controllo del codice sorgente)
Ciò è utile per assicurarti di iniziare sempre da un punto noto per garantire il modo in cui verrà eseguita la build
Se vuoi rimuovere solo una directory (o file) puoi usare Groovy e Manage Jenkins → Scripts Console eseguire uno script che lo rimuove.
Ad esempio, puoi guardare i file con:
dh = new File('./bitnami/jenkins/jenkins_home/workspace/jobname/folder')
dh.eachFile {
println(it)
}
E poi, quando hai la cartella che desideri eliminare dh
, potresti semplicemente aggiungere il codice successivo:
dh.deleteDir()
E verrà eliminato.
Nota: il percorso mostrato nell'esempio è per un'installazione di Bitnami Jenkins, la tua potrebbe essere diversa.
C'è un'opzione per farlo. Configura -> Azioni post-compilazione
L'opzione è disponibile per impostazione predefinita almeno nella versione 2.236 di Jenkins