Question

Je récemment mis à jour la configuration d'un de mes hudson construit. L'histoire de la construction est désynchronisée. Y at-il un moyen d'effacer mon historique de construire?

S'il vous plaît et merci

Était-ce utile?

La solution

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

Si les données sur le disque est foiré, vous devrez aller à votre% HUDSON_HOME% emplois \ \ << em> ProjectName > répertoire et restaurer les répertoires de construction comme ils sont censés être. Ensuite, recharger les données config.

Si vous simplement demander comment supprimer tous construire l'histoire, vous pouvez simplement supprimer les builds un par un via l'interface utilisateur s'il y a quelques-uns, ou aller au% HUDSON_HOME% emplois \ \ << em> projectname > et supprimez tous les sous-répertoires là - ils correspondent à des builds. Ensuite redémarrez le service pour que les modifications prennent effet.

Autres conseils

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

Ce script suppose que vous voulez supprimer uniquement une gamme de constructions. Pour supprimer toutes les versions pour un emploi donné, utilisez ce (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()

Cette réponse est pour Jenkins

  1. Accédez à votre page d'accueil Jenkins → Gérer Jenkins Console Script

     Entrer image description ici

  2. Exécuter le script suivant il. Changer copy_folder à 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

Voici une autre option:. Supprimer les builds avec cURL

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

Les suppressions ci-dessus construire # 1 à # 56 pour MyJob travail.

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

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

Le jeton API doit être récupéré à partir de la page /me/configure Jenkins. Il suffit de cliquer sur le bouton « Afficher API jeton ... » pour afficher à la fois le nom d'utilisateur et le jeton API.

Edit:. On aurait pu remplacer doDeleteAll par doDelete dans les URL ci-dessus pour faire ce travail, en fonction de la configuration ou la version de Jenkins utilisé

Vous pouvez modifier la configuration du projet temporairement pour enregistrer uniquement la dernière 1 build, recharger la configuration (qui doit pas les anciennes builds), puis modifiez le paramètre de configuration à nouveau à la valeur désirée.

Voici comment supprimer toutes les versions pour tous les travaux ...... en utilisant le script Jenkins.

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

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 va supprimer tous Jenkins Job construire l'histoire.

Si vous voulez effacer l'historique de construction de MultiBranchProject (par exemple pipeline), allez à votre page d'accueil Jenkins → Gérer Jenkins → Console de script 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()
}

Une autre façon facile à nettoyer est construit en ajoutant le plug-in Old Jeter à la fin de vos travaux. Définissez un nombre maximum de builds pour enregistrer et puis exécutez à nouveau le travail:

https://wiki.jenkins-ci.org/ affichage / JENKINS / Rejeter + Old + + plug-in Construire

Aller à la supprimer %HUDSON_HOME%\jobs\<projectname> builds dir et supprimer les liens de lastStable, lastSuccessful et supprimer le fichier de nextBuildNumber.

Après avoir fait les étapes précédentes aller à lien ci-dessous de l'interface utilisateur
Jenkins-> Gérer Jenkins -> Recharger la configuration à partir du disque

Il fera que vous avez besoin

Si vous utilisez la méthode console de script puis essayez d'utiliser les éléments suivants au lieu de prendre en compte si des emplois sont regroupés dans des conteneurs de dossier.

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)

Utilisation de la console de script.

Dans le cas où les emplois sont regroupés, il est possible soit de lui donner un nom complet avec des barres obliques:

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

ou parcourir 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()

Suppression directement à partir du système de fichiers n'est pas sûr. Vous pouvez exécuter le script ci-dessous pour supprimer toutes les versions de tous les emplois (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)
    }
  }
}```

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

Ouvrez le fichier « nextBuildNumber » et changer le nombre. Après que recharger la configuration de Jenkins. Remarque:. Fichier « nextBuildNumber » contient le prochain pas de construction qui sera utilisé par Jenkins

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top