Di recente ho aggiornato la configurazione di una delle mie build Hudson. La cronologia della build non è sincronizzata. C'è un modo per cancellare la cronologia della mia build?
Per favore e grazie
Di recente ho aggiornato la configurazione di una delle mie build Hudson. La cronologia della build non è sincronizzata. C'è un modo per cancellare la cronologia della mia build?
Per favore e grazie
Risposte:
Se fai clic su Gestisci Hudson / Ricarica configurazione da disco, Hudson ricaricherà tutti i dati della cronologia di compilazione.
Se i dati sul disco sono incasinati, dovrai andare alla tua directory% HUDSON_HOME% \ jobs \ < nomeprogetto > e ripristinare le directory di build come dovrebbero essere. Quindi ricaricare i dati di configurazione.
Se stai semplicemente chiedendo come rimuovere tutta la cronologia delle build, puoi semplicemente eliminare le build una per una tramite l'interfaccia utente se ce ne sono solo alcune, oppure andare alla directory% HUDSON_HOME% \ jobs \ < projectname > ed eliminare tutte le sottodirectory lì - corrispondono alle build. Successivamente riavviare il servizio affinché le modifiche abbiano effetto.
Utilizza la console degli script (Gestisci Jenkins> Console degli script) e qualcosa di simile a questo script per eliminare in blocco la cronologia di compilazione di un lavoro https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy
Quello script presume che tu voglia eliminare solo un intervallo di build. Per eliminare tutte le build per un determinato lavoro, usa questo (testato):
// 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()
Questa risposta è per Jenkins
Vai alla tua home page di Jenkins → Gestisci Jenkins → Script Console
Esegui il seguente script lì. Cambia copy_folder
inyour project name
Codice:
def jobName = "copy_folder"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
Ecco un'altra opzione: elimina le build con cURL.
$ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
Quanto sopra elimina le build da # 1 a # 56 per il lavoro myJob.
Se l'autenticazione è abilitata sull'istanza Jenkins, è necessario fornire un nome utente e un token API in questo modo:
$ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
Il token API deve essere recuperato dalla /me/configure
pagina in Jenkins. Basta fare clic sul pulsante "Mostra token API ..." per visualizzare sia il nome utente che il token API.
Modifica: potrebbe essere necessario sostituire doDeleteAll
da doDelete
negli URL sopra per farlo funzionare, a seconda della configurazione o della versione di Jenkins utilizzata.
È possibile modificare temporaneamente la configurazione del progetto per salvare solo l'ultima build, ricaricare la configurazione (che dovrebbe eliminare le vecchie build), quindi modificare nuovamente l'impostazione di configurazione sul valore desiderato.
Se desideri cancellare la cronologia di compilazione di MultiBranchProject (ad es. Pipeline), vai alla home page di Jenkins → Gestisci Jenkins → Console di script ed esegui il seguente script:
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()
}
Questa è la migliore opzione disponibile.
Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }
Questo codice eliminerà tutta la cronologia di compilazione del lavoro Jenkins.
Utilizzo di Script Console.
Nel caso in cui i lavori siano raggruppati è possibile dargli un nome completo con barre in avanti:
getItemByFullName("folder_name/job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
o attraversare la gerarchia in questo modo:
def folder = Jenkins.instance.getItem("folder_name")
def job = folder.getItem("job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
L'eliminazione diretta dal file system non è sicura. È possibile eseguire lo script seguente per eliminare tutte le build da tutti i lavori (in modo ricorsivo).
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 altro modo semplice per pulire le build è aggiungere il plug-in Discard Old alla fine dei tuoi lavori. Imposta un numero massimo di build da salvare e quindi esegui di nuovo il lavoro:
https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin
Vai alla %HUDSON_HOME%\jobs\<projectname>
rimozione builds
dir e rimuovere lastStable, lastSuccessful
i collegamenti, e rimuovere nextBuildNumber
file.
Dopo aver eseguito i passaggi precedenti, vai al link sottostante dall'interfaccia utente
Jenkins-> Gestisci Jenkins -> Ricarica configurazione da disco
Farà come ti serve
Se si utilizza il metodo Script Console, provare a utilizzare quanto segue invece per tenere in considerazione se i lavori vengono raggruppati in contenitori di cartelle.
def jobName = "Your Job Name"
def job = Jenkins.instance.getItemByFullName(jobName)
o
def jobName = "My Folder/Your Job Name
def job = Jenkins.instance.getItemByFullName(jobName)