2016-03-23 18 views

Antwort

3

Wenn es keine zusätzlichen Anforderungen, die ich es einfach in der Schale tun würde, zum Beispiel:

find $JENKINS_HOME/jobs/haystack -name log -exec grep -l needle {} \; \ 
    | sed 's|.*/\(.*\)/log|\1|' 
+1

Während dies zu einer Antwort, würde ich sehr erschrocken sein, wenn einer meiner Entwickler für den Zugang unseres Jenkins Server gefragt, so dass sie Shell-Kommandos gegen die Job-Verzeichnisse laufen können. :) –

+0

Sie könnten dann einen Jenkins-Job erstellen, der dies in einem Shell-Schritt ausführt, wenn Sie sich darüber Gedanken machen, @Dave. Und in Bezug auf Ihre eigene Antwort glaube ich nicht, dass das Ausführen von Groovy-Skripten in der Konsole sicherer ist als das Gewähren des Shell-Zugriffs :) – jil

1

Es ist die Log Parser Plugin

Linien von Interesse in der Log-Hervorhebung (Fehler, Warnungen, Informationen)

das Protokoll in Abschnitten Anzeige eine Zusammenfassung der Anzahl der Fehler, Warnungen und Informationszeilen innerhalb des Protokolls und seine Abschnitte unterteilt wird.

Verknüpfung die Zusammenfassung von Fehlern und Warnungen in Zusammenhang mit der vollständigen Lügt, ist es einfach eine Linie von Interesse in dem Protokoll

zeigt eine Zusammenfassung der Fehler und Warnungen auf der Build-Seite

machen zu finden

Wenn es alte Protokolle sind, dann hat @jil die Antwort, vorausgesetzt, Sie sind auf Linux.

+0

Keine Notwendigkeit, Linux anzunehmen. Nur _bash_, _find_, _grep_ und _sed_. Sie können leicht unter Windows installiert werden (z. B. von Cygwin oder Mingw), und die Chancen stehen gut, dass Sie sie bereits haben, d. H. Wenn Sie Git verwenden. – jil

5

Ich benutze oft die Jenkins Script Console für Aufgaben wie diese. Die Groovy plugin bietet die Script-Konsole, aber wenn Sie das Script-Konsole für die regelmäßige Wartung verwenden werden, werden Sie auch die Scriptler plugin wollen, die Sie die Skripte verwalten können, die Sie ausführen.

Von Jenkins verwalten ->Script Console, können Sie ein starkes Skript schreiben, das durchläuft die Aufgabe des Builds für die passende String suchen:

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}" 
    } 
} 
+0

FWIW, die Suche durch alle Aufträge verwenden 'def job = Jenkins.instance.items.find {true}' –

+0

Dies funktioniert nicht unsere CI-Setup. Können Sie bestätigen, ob diese Suche nach den Konsolenprotokollen der aktuell ausgeführten Jobs oder sogar der abgeschlossenen Jobs erfolgt? Wie kann ich nach allen laufenden und abgeschlossenen Jobs suchen (fehlgeschlagen/instabil/erfolgreich)? – askb

+0

@dave bacher Ich bekomme: groovy.lang.MissingPropertyException: Keine solche Eigenschaft: baut für Klasse: java.lang.Boolean Irgendeine Idee? – DenCowboy