web-dev-qa-db-fra.com

Existe-t-il un moyen de nettoyer l'espace de travail Jenkins?

Comment puis-je nettoyer l'espace de travail dans Jenkins? J'utilise AccuRev comme outil de contrôle de version.

J'ai créé des projets freestyle à Jenkins.

55
Karthik

Il existe un moyen de nettoyer l’espace de travail dans Jenkins. Vous pouvez nettoyer l'espace de travail avant ou après la construction. 

Commencez par installer Plug-in de nettoyage d’espace de travail .

Pour nettoyer l’espace de travail avant la construction: Sous Build Environment,, cochez la case disant Supprimer l’espace de travail avant le début de la construction.

Pour nettoyer l'espace de travail après la construction: Sous l'en-tête Actions post-construction, sélectionnez Supprimer l'espace de travail une fois la construction terminée dans le menu déroulant Ajouter actions post-génération.

68
Nagendra Singh

Si vous voulez nettoyer manuellement, avec ma version de jenkins (il ne semble pas avoir besoin d'un plugin supplémentaire, 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 "Supprimer l’espace de travail actuel" apparaît en dessous, dans la colonne de gauche .  screenshot

36
rogerdpack

Outre les solutions ci-dessus, il existe un moyen plus "COMMUN" - supprimer directement le plus gros consommateur d'espace de la machine Linux. Vous pouvez suivre les étapes ci-dessous:

  1. Connexion à la machine Jenkins (PuTTY)  enter image description here
  2. cd vers le chemin d'installation Jenkins

Utiliser ls -lart pour lister les dossiers cachés également, normalement jenkin l'installation est placée dans le dossier .jenkins /

[xxxxx ~]$ ls -lart

drwxrwxr-x 12 xxxx  4096 Feb  8 02:08 .jenkins/
  1. lister les espaces de dossiers

Use df -h pour afficher l'espace disque en haut niveau

du -sh ./*/ pour lister la mémoire totale de chaque sous-dossier du fichier .__ actuel. chemin.

du -a /etc/ | sort -n -r | head -n 10 listera les 10 meilleurs répertoires manger de l'espace disque dans/etc /

  1. Supprimer l'ancienne construction ou un autre dossier de grande taille

Normalement, le dossier ./job/ ou ./workspace/ peut être le plus grand dossier. S'il vous plaît aller à l'intérieur et supprimer la base sur votre besoin (ne pas supprimer le dossier entier).

rm -rf theFolderToDelete

 enter image description here

19
Kevin Li

Vous pouvez exécuter le script ci-dessous dans Gérer Jenkins Console de scripts pour supprimer les espaces de travail de tous les travaux d'un coup. Nous l'avons fait pour nettoyer de 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")
  }
}
9
Upen

Plug-in de nettoyage d'espace de travail

Dans le fichier Jenkins ajouter

cleanWs()

Cela supprimera l'espace de travail une fois la construction terminée.

2
waranlogesh

Vous devrez installer ce plugin avant que les options mentionnées ci-dessus apparaissent

Plug-in de nettoyage d'espace de travail

Ce plugin ajoute la case à cocher à toutes les configurations de travaux pour vous permettre de supprimer tout l’espace de travail avant que des étapes (contrôle de source inclus) ne soient exécutées.

Ceci est utile pour s'assurer que vous commencez toujours à partir d'un point connu pour garantir la manière dont vous construisez fonctionnera. 

1
Keir

pas autorisé à commenter, donc:

La réponse de Upen fonctionne parfaitement, mais pas si vous avez mélangé Jenkins Pipeline Jobs avec Freestyle Jobs. Il n'existe pas de méthode telle que DoWipeWorkspace sur les travaux de pipeline. J'ai donc modifié le script pour ignorer ceux-ci:

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 nom de travail si nécessaire: item.getDisplayName().toLowerCase().contains("release")

1
achschneid

Réponse

rm -rf /var/jenkins_home/workspaces/*

Explication

Vous pouvez nettoyer le répertoire /var/jenkins_home/workspace en y supprimant des espaces de travail individuels. 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. Vous pouvez supprimer tous les espaces de travail avec: 

rm -rf /var/jenkins_home/workspaces/*

Si vous devez supprimer tous les espaces de travail sauf un ou deux, vous pouvez utiliser 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/{}

Si vous préférez une approche plus ciblée, vous pouvez répertorier les espaces de travail par ordre décroissant de taille:

du -d 1 /var/jenkins_home/workspace | sort -n -r | head -n 10

Et supprimez-les individuellement.

Remarque: Je suppose que votre $JENKINS_HOME est réglé sur la valeur par défaut: /var/jenkins_home.

0
Sherwood Callaway

En supposant que la question concerne le nettoyage de l'espace de travail du travail en cours, vous pouvez exécuter:

test -n "$WORKSPACE" && rm -rf $WORKSPACE/*
0
aleb