2010-08-04 46 views
55

Ho aggiornato di recente la configurazione di una delle mie build hudson. La cronologia delle build non è sincronizzata. C'è un modo per cancellare la cronologia delle mie build?Come posso cancellare la cronologia di costruzione di Jenkins/Hudson?

favore e grazie

+0

Puoi approfondire "totalmente incasinato"? Forse qualcuno avrà già riscontrato un problema simile e potrà indicarti come risolverlo. –

+0

scusa per l'ambiguità. fisso. – myusuf3

+0

C'è una domanda nuova e leggermente più specifica qui: https://stackoverflow.com/questions/13052390/jenkins-remove-old-builds-with-command-line/22303284 –

risposta

40

Se si fa clic su Gestisci Hudson/ricaricare la configurazione da disco, Hudson ricaricherà tutti i dati di storia di costruzione.

Se i dati sul disco è incasinato, avrete bisogno di andare al tuo% HUDSON_HOME% \ lavori \ < nomeprogetto> directory e ripristinare le directory di compilazione perché si suppone di essere. Quindi ricaricare i dati di configurazione.

se si sta semplicemente chiedendo come rimuovere tutta la storia costruire, si può solo eliminare le generazioni uno ad uno tramite l'interfaccia utente se ci sono solo alcuni, o contattare l'% \% di posti di lavoro HUDSON_HOME \ < projectname > directory ed elimina tutte le sottodirectory lì - esse corrispondono alle build. Successivamente, riavviare il servizio affinché le modifiche abbiano effetto.

+0

Ho cancellato tutti i file e le cartelle all'interno di "/ var/lib/jenkins/jobs/Demo", ma io quando vado a Jenkins Interfaccia utente in questo JOB Continuo a vedere la cronologia delle build. – paul

+1

Dopo aver "scimmia" con la struttura della directory, basta andare su "Gestisci Jenkins" e selezionare "Ricarica configurazione da disco" – DanBaker

+1

@paul, dopo aver eliminato le cartelle lì, un ** riavvio ** di Jenkins è necessario per vedere la build la storia è scomparsa dall'interfaccia utente. BTW, se utilizziamo Jenkins, il percorso si trova in genere in/var/jenkins_home/jobs/{nome progetto}/builds/ – Bright

8

È 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.

+0

Come si fa? –

+0

Scusa, non ho usato Hudson ora per un paio d'anni, ma guarda questo sul ricaricamento della configurazione: http://stackoverflow.com/questions/5216552/does-anyone-know-how-to-reload-hudson-configuration -senza riavvio –

76

utilizzare la console di script (Gestisci Jenkins> Console Script) e qualcosa come questo script per eliminare la cronologia di massa build di un lavoro https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy

Questo script presuppone che si desidera eliminare solo una gamma di build. Per eliminare tutte le build per un determinato lavoro, utilizzare 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() 
+5

Grande !! sicuramente l'approccio migliore! :) – hek2mgl

+0

ottimo trucco, ma che ne dici di resettare il contatore delle build? qualsiasi script per questo? –

+1

@JesChergui Ho aggiornato per mostrare il reset del numero di build. La console di script ti permette di controllare ogni sorta di cose, vedi http://javadoc.jenkins-ci.org/ (AbstractProject è un buon punto di partenza per giocare con i lavori) – rjohnston

13

Ecco un'altra opzione: eliminare le generazioni con l'arricciatura.

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

Il precedente cancella da # 1 a # 56 per lavoro myJob.

Se l'autenticazione è abilitata sull'istanza Jenkins, un nome utente e token dell'API devono essere fornite in questo modo:

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

Il token API devono essere recuperati dalla pagina/mi/configurare in Jenkins. Basta fare clic sul pulsante "Mostra token API ..." per visualizzare sia il nome utente che il token API.

Edit: uno potrebbe essere necessario sostituire doDeleteAll dai doDelete negli URL cui sopra per effettuare questo lavoro, a seconda della configurazione o la versione di Jenkins utilizzato.

0

Passare a: %JENKINS_HOME%\jobs\jobName

Aprire il file "nextBuildNumber" e cambiare il numero. Dopo questo ricarica la configurazione di Jenkins. Nota: il file "nextBuildNumber" contiene il numero di build successivo che verrà utilizzato da Jenkins.

7

Ecco come eliminare tutte le build per tutti i lavori ......usando lo script di Jenkins.

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

Vai %HUDSON_HOME%\jobs\<projectname> rimuovere builds dir e rimuovere lastStable, lastSuccessful link, e rimuovere nextBuildNumber file.

Dopo aver fatto i passi precedenti andare al di sotto di collegamento da UI
Jenkins-> Gestisci Jenkins -> Configurazione Ricarica dal disco

Lo farà come è necessario

37

Questa risposta è per Jenkins

  1. Vai alla home page di Jenkins → Gestisci JenkinsScript Contro ole

    Enter image description here

  2. Eseguire il seguente script lì. Cambiare copy_folder a your project name

Codice:

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

My post

+3

Miglior risposta finora –

+0

Questa è la soluzione più veloce. –

+0

Sì, ma per questo, NON riavviare Jenkins o sembra non aggiornare il nextbuildnumber a 1 quando si fa una build dopo il riavvio. Il mio è partito alle 39 quindi ho dovuto rifare questo. – Will

0

Se si utilizza il metodo Console Script quindi provare a utilizzare invece il seguente di prendere 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) 
Problemi correlati