Comment puis-je nettoyer l'espace de travail dans Jenkins? J'utilise AccuRev
comme outil de contrôle de version.
J'ai créé des freestyle
projets dans Jenkins.
Réponses:
Il existe un moyen de nettoyer l'espace de travail dans Jenkins. Vous pouvez nettoyer l'espace de travail avant la génération ou après la génération.
Tout d'abord, installez le plugin Workspace Cleanup .
Pour nettoyer l'espace de travail avant la génération: Sous Environnement de génération , cochez la case qui indique Supprimer l'espace de travail avant le démarrage de la génération.
Pour nettoyer l'espace de travail après la construction: Sous l'en-tête Actions après la construction, sélectionnez Supprimer l'espace de travail une fois la construction terminée dans le menu déroulant Ajouter des actions après la construction .
Si vous voulez le nettoyer manuellement, pour moi avec ma version de jenkins (ne semblait pas avoir besoin d'un plugin supplémentaire installé, mais qui sait), il y a un lien "espace de travail" dans la colonne de gauche, cliquez sur votre projet, puis sur «espace de travail», puis un lien «Effacer l'espace de travail actuel» apparaît en dessous dans la colonne de gauche.
En plus des solutions ci-dessus, il existe un moyen plus "COMMUN" - supprimer directement le plus grand consommateur d'espace de la machine Linux. Vous pouvez suivre les étapes ci-dessous:
En utilisant ls -lart pour lister également les dossiers cachés, normalement l'installation de jenkin est placée dans le dossier .jenkins /
[xxxxx ~]$ ls -lart drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
Use df -h
pour afficher l'espace disque en haut niveau
du -sh ./*/
pour lister la mémoire totale pour chaque sous-dossier dans le chemin actuel.
du -a /etc/ | sort -n -r | head -n 10
listera les 10 principaux répertoires consommant de l'espace disque dans / etc /
Normalement, le dossier ./job/ ou ./workspace/ peut être le plus grand dossier. Veuillez aller à l'intérieur et supprimer la base dont vous avez besoin (NE PAS supprimer le dossier entier).
rm -rf theFolderToDelete
Plug-in de nettoyage de l'espace de travail
Dans le fichier Jenkins, ajoutez
cleanWs()
Cela supprimera l'espace de travail une fois la construction terminée
cleanWs()
n'étais pas présent sur la page de destination du plugin comme syntaxe à ajouter à mon Jenkinsfile
.
IMPORTANT: il est prudent de supprimer l'espace de travail pour un travail Jenkins donné tant que le travail n'est pas en cours d'exécution!
NOTE: Je suppose votre $JENKINS_HOME
est réglé sur la valeur par défaut: /var/jenkins_home
.
rm -rf /var/jenkins_home/workspaces/<workspace>
rm -rf /var/jenkins_home/workspaces/*
Celui-ci utilise grep pour créer une liste blanche:
ls /var/jenkins_home/workspace \
| grep -v -E '(job-to-skip|another-job-to-skip)$' \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Celui-ci utilise du et sort pour répertorier les espaces de travail par ordre du plus grand au plus petit. Ensuite, il utilise la tête pour saisir les 10 premiers:
du -d 1 /var/jenkins_home/workspace \
| sort -n -r \
| head -n 10 \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Vous pouvez exécuter le script ci-dessous dans la console Gérer Jenkins → Scripts Console pour supprimer les espaces de travail de tous les travaux d'un seul coup. Nous l'avons fait pour nettoyer l'espace sur le système de fichiers.
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")
}
}
pas autorisé à commenter, par conséquent:
La réponse d' Upen fonctionne très bien, mais pas si vous avez des jobs Jenkins Pipeline mélangés avec des jobs Freestyle. Il n'existe pas de méthode telle que DoWipeWorkspace sur les travaux de pipeline. J'ai donc modifié le script afin de les ignorer:
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")
}
}
vous pouvez également filtrer par noms de tâches si nécessaire:
item.getDisplayName().toLowerCase().contains("release")
Vous devrez installer ce plugin avant que les options mentionnées ci-dessus n'apparaissent
Plug-in de nettoyage de l'espace de travail
Ce plugin ajoute la case à cocher à toutes les configurations de travail pour vous permettre de supprimer tout l'espace de travail avant l'exécution de toute étape (contrôle de source inc)
Ceci est utile pour vous assurer que vous commencez toujours à partir d'un point connu afin de garantir la manière dont vous construisez fonctionnera
Il y a une option pour le faire. Configurer -> Actions post-build
L'option est fournie par défaut au moins dans la version 2.236 de Jenkins
Si vous souhaitez simplement supprimer un répertoire (ou fichier), vous pouvez utiliser Groovy et Manage Jenkins → Scripts Console pour exécuter un script qui le supprime.
Par exemple, vous pouvez consulter les fichiers avec:
dh = new File('./bitnami/jenkins/jenkins_home/workspace/jobname/folder')
dh.eachFile {
println(it)
}
Et puis, lorsque vous avez le dossier que vous souhaitez supprimer dh
, vous pouvez simplement ajouter le code suivant:
dh.deleteDir()
Et il sera supprimé.
Remarque: le chemin indiqué dans l'exemple correspond à une installation Bitnami Jenkins, le vôtre peut être différent.