3
votes

Pipeline Jenkins - Supprimer le dossier @tmp

J'utilise "Workspace Cleanup Plugin" pour nettoyer l'espace de travail une fois le travail terminé. Mais le répertoire @tmp n'est toujours pas supprimé.

De toute façon, nous pouvons supprimer ce dossier @tmp à l'aide d'un script de pipeline.

Cela ressemble à un problème connu d'après ce que je vois dans Jira:


1 commentaires

Vous n'avez pas réussi à indiquer où vous voyez ce répertoire. Lorsque Project @ tmp est trouvé sur le jenkins MASTER, il est utilisé si vous rejouez le pipeline de projet. La suppression du répertoire permettrait d'économiser de l'espace, mais entraînerait une perte fonctionnelle.


4 Réponses :


2
votes

Vous pouvez utiliser deleteDir () comme dernière étape du pipeline Jenkinsfile (en supposant que vous n'ayez pas changé le répertoire de travail).


0 commentaires

7
votes

J'ai utilisé un espace de travail personnalisé dans Jenkins, puis deleteDir () ne supprimera pas le dossier @tmp.

Donc, pour supprimer @tmp avec l'utilisation de l'espace de travail suivant

pipeline {
    agent {
        node {
            customWorkspace "/home/jenkins/jenkins_workspace/${JOB_NAME}_${BUILD_NUMBER}"
        }
    }
    post {
        cleanup {
            /* clean up our workspace */
            deleteDir()
            /* clean up tmp directory */
            dir("${workspace}@tmp") {
                deleteDir()
            }
            /* clean up script directory */
            dir("${workspace}@script") {
                deleteDir()
            }
        }
    }
}

Cet extrait fonctionnera également pour l'espace de travail par défaut.

p>


0 commentaires

1
votes

L'extrait de code suivant fonctionne très bien.

//@tmp clean up
stage ('cleanup') 
{
  withEnv(['PATH+EXTRA=/usr/sbin:/usr/bin:/sbin:/bin']) {
  dir('<your directory path>') {
  sh "rm -rf <directory `enter code here`name>@tmp"
  }
  }
}


0 commentaires

0
votes

Ce n'est pas une réponse directe à votre question, mais cela pourrait aider quelqu'un.

Si vous utilisez dir Étape du pipeline Jenkins pour changer de répertoire, alors vous verrez ces dossiers @tmp se créer. À la place, utilisez la commande cd et ils ne seront pas créés en premier lieu.

Donc, au lieu de,

def myFunc(String folder) {
  bat "cd ${folder}"
  // work
}

Faites ceci.

def myFunc(String folder) {
  dir(folder) {
   // work
  }
}


0 commentaires