web-dev-qa-db-fra.com

Comment effacer mon histoire de construction Jenkins/Hudson?

J'ai récemment mis à jour la configuration de l'une de mes versions hudson. L'historique de construction est désynchronisé. Existe-t-il un moyen d'effacer mon historique de build?

S'il te plaît et merci

71
myusuf3

Si vous cliquez sur Gérer Hudson/Recharger la configuration à partir du disque, Hudson rechargera toutes les données de l'historique de construction.

Si les données sur le disque sont perturbées, vous devrez accéder à votre répertoire% HUDSON_HOME%\jobs\< nom_projet > et restaurer les répertoires de construction tels qu'ils sont censés l'être. Rechargez ensuite les données de configuration.

Si vous demandez simplement comment supprimer tout l'historique de génération, vous pouvez simplement supprimer les générations une par une via l'interface utilisateur s'il y en a quelques-unes ou accéder au répertoire% HUDSON_HOME%\jobs\< nom du projet >. et supprimez tous les sous-répertoires présents - ils correspondent aux versions . Ensuite, redémarrez le service pour que les modifications prennent effet.

44
William Leara

Utilisez la console de script (Gérer Jenkins> Console de script) et quelque chose comme ce script pour supprimer en bloc l'historique de construction d'un travail https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy

Ce script suppose que vous souhaitez uniquement supprimer une série de générations. Pour supprimer toutes les versions d'un travail donné, utilisez ceci (testé):

// change this variable to match the name of the job whose builds you want to delete
def jobName = "Your Job Name"
def job = Jenkins.instance.getItem(jobName)

job.getBuilds().each { it.delete() }
// uncomment these lines to reset the build number to 1:
//job.nextBuildNumber = 1
//job.save()
91
rjohnston

Cette réponse est pour Jenkins

  1. Accédez à votre page d'accueil Jenkins → Gérer Jenkins → _ {Console de script

     Enter image description here

  2. Exécutez le script suivant ici. Remplacez copy_folder par your project name

Code:

def jobName = "copy_folder"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()

Mon message

57
Nayana Adassuriya

Voici une autre option: supprimez les versions avec cURL.

$ curl -X POST http://jenkins-Host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll

Ce qui précède supprime les versions 1 à 56 du travail myJob.

Si l'authentification est activée sur l'instance Jenkins, un nom d'utilisateur et un jeton d'API doivent être fournis comme suit:

$ curl -u userName:apiToken -X POST http://jenkins-Host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll

Le jeton de l'API doit être extrait de la page /me/configure dans Jenkins. Cliquez simplement sur le bouton "Afficher le jeton de l'API ..." pour afficher à la fois le nom d'utilisateur et le jeton de l'API.

Edit: il peut être nécessaire de remplacer doDeleteAll par doDelete dans les URL ci-dessus pour que cela fonctionne, en fonction de la configuration ou de la version de Jenkins utilisée.

18
Erwan Legrand

Vous pouvez modifier temporairement la configuration du projet pour ne sauvegarder que la dernière version, recharger la configuration (qui devrait supprimer les anciennes versions), puis modifier à nouveau le paramètre de configuration sur la valeur souhaitée.

9
the_mandrill

Voici comment supprimer ALL BUILDS FOR ALL JOBS ...... en utilisant le script Jenkins.

def jobs = Jenkins.instance.projects.collect { it } 
jobs.each { job -> job.getBuilds().each { it.delete() }} 
8
ort11

Si vous utilisez la méthode Script Console, essayez plutôt d'utiliser ce qui suit pour prendre en compte si les travaux sont regroupés dans des conteneurs de dossiers. 

def jobName = "Your Job Name"
def job = Jenkins.instance.getItemByFullName(jobName)

ou

def jobName = "My Folder/Your Job Name
def job = Jenkins.instance.getItemByFullName(jobName)
1
RampantBadger

La suppression directe du système de fichiers n’est pas sûre. Vous pouvez exécuter le script ci-dessous pour supprimer toutes les générations de tous les travaux (de manière récursive).

def numberOfBuildsToKeep = 10
Jenkins.instance.getAllItems(AbstractItem.class).each {
  if( it.class.toString() != "class com.cloudbees.hudson.plugins.folder.Folder" && it.class.toString() != "class org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject") {
    println it.name
    builds = it.getBuilds()
    for(int i = numberOfBuildsToKeep; i < builds.size(); i++) {
        builds.get(i).delete()
      println "Deleted" + builds.get(i)
    }
  }
}```
1
Aytunc Beken

Accédez au répertoire %HUDSON_HOME%\jobs\<projectname> remove builds__, supprimez les liens lastStable, lastSuccessful et supprimez le fichier nextBuildNumber.

Après avoir effectué les étapes ci-dessus, accédez au lien ci-dessous à partir de l'interface utilisateur.
Jenkins-> Manage Jenkins -> Recharger la configuration à partir du disque 

Il fera ce que vous avez besoin

1
Manish Agrawal

Un autre moyen facile de nettoyer les versions consiste à ajouter le plug-in Supprimer l'ancien à la fin de vos travaux. Définissez un nombre maximal de générations à enregistrer, puis réexécutez le travail: 

https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin

1
Rutger Huijsmans

Si vous souhaitez effacer l'historique de construction de MultiBranchProject (par exemple, un pipeline), , Accédez à votre page d'accueil Jenkins → Gérer Jenkins → Console de scripts et exécutez le script suivant:

def projectName = "ProjectName"
def project = Jenkins.instance.getItem(projectName)
def jobs = project.getItems().each {
  def job = it
  job.getBuilds().each { it.delete() }
  job.nextBuildNumber = 1
  job.save()
}
0
Marin Ivanov

Utilisation de la console de script.

Si les tâches sont regroupées, vous pouvez lui attribuer un nom complet avec des barres obliques: 

getItemByFullName("folder_name/job_name") 
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()

ou traversez la hiérarchie comme ceci:

def folder = Jenkins.instance.getItem("folder_name")
def job = folder.getItem("job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
0
ATrubka

Accédez à: %JENKINS_HOME%\jobs\jobName

Ouvrez le fichier "nextBuildNumber" et changez le numéro. Après cela, rechargez la configuration de Jenkins. Remarque: le fichier "nextBuildNumber" contient la prochaine version non utilisée par Jenkins.

0
Nitish

Celui-ci est la meilleure option disponible.

Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }

Ce code supprimera tout l'historique de construction du travail Jenkins.

0
Rahul khanvani