Ho un lavoro Jenkins con oltre 100 build. Devo cercare tra tutte le build di quel lavoro per trovare le build che hanno una determinata stringa nell'output della console. C'è qualche plugin per questo? Come lo faccio?Ricerca tramite l'output della console di un lavoro Jenkins
risposta
Se non ci sono ulteriori requisiti che vorrei fare semplicemente nella shell, ad esempio:
find $JENKINS_HOME/jobs/haystack -name log -exec grep -l needle {} \; \
| sed 's|.*/\(.*\)/log|\1|'
C'è la Log Parser Plugin
mettendo in evidenza le linee di interesse nel registro (errori, avvisi, informazioni)
dividendo il registro in sezioni che mostrano un riepilogo del numero di errori, avvertenze e linee di informazione all'interno del registro e delle sue sezioni.
che collega la sintesi di errori e avvisi nel contesto del registro completo, il che rende facile trovare una linea di interesse nel registro
che mostra un riepilogo di errori e avvisi sulla pagina di compilazione
Se sono vecchi registri, @jil ha la risposta assumendo che tu sia su Linux.
Non c'è bisogno di assumere Linux. Solo _bash_, _find_, _grep_ e _sed_. Possono essere facilmente installati su Windows (ad es. Da cygwin o mingw) e è probabile che tu li abbia già, cioè se stai usando Git. – jil
Spesso utilizzo lo Jenkins Script Console per attività come questa. Lo Groovy plugin fornisce la console di script, ma se si intende utilizzare la console di script per la manutenzione periodica, è anche necessario lo Scriptler plugin che consente di gestire gli script eseguiti.
Da Manage Jenkins ->Script Console, è possibile scrivere uno script Groovy che consente di scorrere il lavoro del build cercando la stringa corrispondente:
JOB_NAME = "My Job"
BUILD_STRING = "Hello, world"
def job = Jenkins.instance.items.find { it.name == JOB_NAME }
for (build in job.builds) {
def log = build.log
if (log.contains(BUILD_STRING)) {
println "${job.name}: ${build.id}"
}
}
FWIW, per cercare tra tutti i lavori usa 'def job = Jenkins.instance.items.find {true}' –
Questo non funziona con la nostra configurazione CI. Puoi confermare se questa ricerca per i registri della console dei lavori attualmente in esecuzione o anche i lavori completati? Come posso cercare tutti i lavori che sono in esecuzione e completati (non riusciti/non stabili/riusciti)? – askb
@dave bacher Ottengo: groovy.lang.MissingPropertyException: Nessuna proprietà del genere: build per la classe: java.lang.Boolean Qualche idea? – DenCowboy
Grazie a tutti per le vostre soluzioni di valore. Dopo un po 'di ricerche aggiuntive ho scoperto che c'è un plugin in Jenkins per fare questo.
https://wiki.jenkins-ci.org/display/JENKINS/Lucene-Search
questo modo salvare i risultati di uscita della console e gli utenti possono fare ricerca nella casella di ricerca.
Mentre questa è una risposta soddisfacente, sarei molto impaurito se uno dei miei sviluppatori chiedesse l'accesso al nostro server Jenkins in modo che possano eseguire comandi di shell contro le directory dei lavori. :) –
È possibile creare un lavoro Jenkins che esegua questo in un passo della shell se si è preoccupati di ciò, @Dave. E riferendomi alla tua risposta, non penso che l'esecuzione degli script di Groovy in console sia più sicura che garantire l'accesso alla shell :) – jil