2016-03-23 21 views

Odpowiedz

3

Jeśli nie ma dodatkowych wymagań zrobiłbym to po prostu w skorupach, np:

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

Chociaż jest to dobra odpowiedź, byłbym bardzo przestraszony, gdyby jeden z moich programistów poprosił o dostęp do naszego serwera Jenkins, aby mogli uruchamiać polecenia powłoki w stosunku do katalogów zadań. :) –

+0

Możesz stworzyć zadanie Jenkinsa, które uruchomi to w kroku powłoki, jeśli obawiasz się o to, @Dave. Odnosząc się do własnej odpowiedzi, nie sądzę, aby uruchamianie skryptów Groovy w konsoli było bezpieczniejsze niż udzielanie dostępu do powłoki :) – jil

1

Istnieje Log Parser Plugin

podkreślając linie interesów w dzienniku (błędy, ostrzeżenia, informacje)

dzielenie dziennika na sekcje wyświetlające podsumowanie liczby błędów, ostrzeżeń i linii informacyjnych w dzienniku i jego sekcji.

łącząc podsumowanie błędów i ostrzeżeń w kontekście pełnego dziennika, dzięki czemu można łatwo znaleźć linię zainteresowania w dzienniku

przedstawiający podsumowanie błędów i ostrzeżeń na stronie build

Jeśli to stare logi, to @jil ma odpowiedź, zakładając, że jesteś na Linuksie.

+0

Nie trzeba zakładać Linuxa. Po prostu _bash_, _find_, _grep_ i _sed_. Można je łatwo zainstalować na Windowsie (np. Z cygwin lub mingw) i prawdopodobnie masz już je, np. Jeśli używasz Git. – jil

5

Często używam Jenkins Script Console do takich zadań. Groovy plugin udostępnia konsolę skryptów, ale jeśli zamierzasz używać konsoli skryptów do okresowej konserwacji, będziesz również potrzebował Scriptler plugin, która pozwala zarządzać uruchamianymi skryptami.

Od Manage Jenkins ->Script Console, można napisać groovy skrypt, który dokonuje iteracji praca na kompilacje szukasz napisu pasującego:

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, aby przeszukać wszystkie zadania, użyj 'def job = Jenkins.instance.items.find {true}' –

+0

To nie działa w konfiguracji CI. Czy możesz potwierdzić, czy to wyszukiwanie dzienników konsoli bieżących zadań, czy nawet zakończonych zadań? Jak mogę wyszukać wszystkie zadania, które są uruchomione i zakończone (nieudane/niestabilne/zakończone sukcesem)? – askb

+0

@dave bacher Dostaję: groovy.lang.MissingPropertyException: Brak takiej właściwości: kompilacje dla klasy: java.lang.Boolean Każdy pomysł? – DenCowboy