2016-03-23 66 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