J'ai récemment mis à jour la configuration de l'un de mes builds hudson. L'historique de compilation n'est pas synchronisé. Existe-t-il un moyen d'effacer mon historique de build?
S'il te plaît et merci
J'ai récemment mis à jour la configuration de l'un de mes builds hudson. L'historique de compilation n'est pas synchronisé. Existe-t-il un moyen d'effacer mon historique de build?
S'il te plaît et merci
Réponses:
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 faussées, vous devrez aller dans votre répertoire% HUDSON_HOME% \ jobs \ < projectname > et restaurer les répertoires de construction comme ils sont censés l'être. Rechargez ensuite les données de configuration.
Si vous demandez simplement comment supprimer tout l'historique des builds, vous pouvez simplement supprimer les builds une par une via l'interface utilisateur s'il n'y en a que quelques-uns, ou aller dans le répertoire% HUDSON_HOME% \ jobs \ < projectname > et supprimer tous les sous-répertoires là - ils correspondent aux builds. Ensuite, redémarrez le service pour que les modifications prennent effet.
Utilisez la console de script (Manage Jenkins> Script Console) et quelque chose comme ce script pour supprimer en bloc l'historique de construction d'une tâche https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy
Ce script suppose que vous souhaitez supprimer uniquement une plage de builds. 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()
Cette réponse est pour Jenkins
Accédez à votre page d'accueil Jenkins → Gérer Jenkins → Console de script
Exécutez le script suivant ici. Changer copy_folder
pouryour project name
Code:
def jobName = "copy_folder"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
Voici une autre option: supprimez les builds avec cURL.
$ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
Ce qui précède supprime les builds 1 à 56 pour le 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 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 /me/configure
page dans Jenkins. Cliquez simplement sur le bouton "Afficher le jeton API ..." pour afficher à la fois le nom d'utilisateur et le jeton API.
Edit: il faudra peut-être remplacer doDeleteAll
par doDelete
dans les URL ci-dessus pour que cela fonctionne, selon la configuration ou la version de Jenkins utilisée.
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 à la valeur souhaitée.
Si vous souhaitez effacer l'historique de construction de MultiBranchProject (par exemple le pipeline), accédez à 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()
}
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 de Jenkins Job.
Utilisation de Script Console.
Dans le cas où les travaux sont regroupés, il est possible 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 parcourez 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()
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 versions 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)
}
}
}
Un autre moyen simple de nettoyer les builds consiste à ajouter le plugin Discard Old à la fin de vos travaux. Définissez un nombre maximum de builds à enregistrer, puis réexécutez le travail:
https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin
Accédez au répertoire de %HUDSON_HOME%\jobs\<projectname>
suppression builds
et supprimez les lastStable, lastSuccessful
liens, puis supprimeznextBuildNumber
le fichier.
Après avoir effectué les étapes ci-dessus, accédez au lien ci-dessous à partir de l'interface utilisateur
Jenkins-> Gérer Jenkins -> Recharger la configuration à partir du disque
Il fera ce dont vous avez besoin
Si vous utilisez la méthode Script Console, essayez d'utiliser ce qui suit à la place 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)