2016-03-23 102 views

回答

3

如果沒有額外的要求,我會做簡單的外殼,如:

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

雖然這是一個很好的答案,但如果我的一位開發人員要求訪問我們的Jenkins服務器,以便他們可以針對作業目錄運行shell命令,我會非常害怕。 :) –

+0

你可以創建一個Jenkins作業,然後在shell步驟中運行這個工作,如果你關心的是@Dave。並且提到你自己的答案,我不認爲在控制檯中運行Groovy腳本比授予shell訪問更安全:) – jil

1

還有就是Log Parser Plugin

突出感興趣的行日誌中(錯誤,警告,信息)

將日誌劃分爲多個部分,顯示日誌及其部分中錯誤,警告和信息行數量的摘要。

錯誤和警告的彙總連接成完整的日誌的情況下,因此很容易找到日誌

在一條線上的興趣顯示了構建頁面

上的錯誤和警告的摘要

如果它是舊的日誌,那麼@jil的答案假設你在Linux上。

+0

不需要假設Linux。只需_bash_,_find_,_grep_和_sed_。他們可以很容易地安裝在Windows上(例如從cygwin或mingw),並且很有可能你已經擁有了它們,例如,如果你使用的是Git。 – jil

5

我經常使用Jenkins Script Console來完成這樣的任務。 Groovy plugin提供了腳本控制檯,但是如果您要使用腳本控制檯進行定期維護,您還需要Scriptler plugin,它允許您管理您運行的腳本。

管理詹金斯 - >腳本控制檯,你可以寫,通過作業的迭代構建尋找匹配的字符串Groovy腳本:

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,搜索所有作業使用'def job = Jenkins.instance.items.find {true}' –

+0

這不適用於我們的CI設置。您是否可以確認是否搜索當前正在運行的作業的控制檯日誌或甚至已完成的作業?我怎樣才能搜索正在運行和完成的所有工作(失敗/不​​穩定/成功)? – askb

+0

@dave bacher我得到:groovy.lang.MissingPropertyException:沒有這樣的屬性:構建類:java.lang.Boolean任何想法? – DenCowboy