搜索Jenkins作业的控制台输出

时间:2016-03-23 20:55:34

标签: jenkins jenkins-plugins console-output

我有一个拥有100多个版本的Jenkins工作。我需要搜索该作业的所有构建,以查找在控制台输出中具有特定字符串的构建。那有插件吗?我该怎么做?

8 个答案:

答案 0 :(得分:12)

我经常使用Jenkins Script Console来完成这样的任务。 Groovy plugin提供了脚本控制台,但是如果您要使用脚本控制台进行定期维护,您还需要Scriptler plugin,它允许您管理脚本跑。

来自管理Jenkins - > 脚本控制台,您可以编写一个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}"
  }
}

答案 1 :(得分:6)

如果没有其他要求,我会在shell中进行,例如:

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

答案 2 :(得分:2)

感谢大家提供的宝贵解决方案。经过一些额外的研究后,我发现Jenkins有一个插件可以做到这一点。

https://wiki.jenkins-ci.org/display/JENKINS/Lucene-Search

这将保存控制台输出结果,用户可以在搜索框中进行搜索。

答案 3 :(得分:2)

要搜索所有作业的日志,请执行以下操作:

我增强了@DaveBacher的代码,以在Jenkins脚本控制台中运行。 帮助我找到了在多个作业中发生的零星错误。

NEEDLE = "string_i_am_looking_for"

for (job in Jenkins.instance.getAllItems(Job.class)) {
  for (build in job.builds) {
    def log = build.log
    if (log.contains(NEEDLE)) {
      println "${job.name}: ${build.id}"
    }
  }
}

答案 4 :(得分:1)

Log Parser Plugin

  

突出显示日志中感兴趣的行(错误,警告,信息)

     

将日志划分为多个部分,显示日志及其部分中的错误,警告和信息行数的摘要。

     

将错误和警告的摘要链接到完整日志的上下文中,以便在日志中轻松找到感兴趣的行

     

在构建页面上显示错误和警告的摘要

如果它是旧日志,那么@jil会假设您使用的是Linux。

答案 5 :(得分:1)

this blog post只是向我扔了一个TextFinder plugin,它使您可以在工作区文件或控制台输出中搜索文本,并覆盖构建状态为success /找到文本后失败。

原始张贴者没有说找到文本时会发生什么,但是它正在寻找将我带到这里的功能。

答案 6 :(得分:0)

要在所有詹金斯工作中搜索正则表达式模式,并打印第一条匹配的

for (job in Jenkins.instance.items) {
  for (build in job.builds) {
    try {
      def log = build.log
      def match = log =~ "\n(.*${PATTERN}.*)\n"
      if (match) {
        println "Job [${job.name}] - Build [${build.id}]: ${match[0][0]}"
      }
    }
    catch (Exception e) {
      println e
    }
  }
}

例如,在我的版本中搜索我发现的PATTERN = "(TLS|Build).*timeout"

工作[OSP-AWS]-构建[83]:构建超时:拨打tcp [:: 1]:6443:连接:连接被拒绝

职位[OSP-GCP]-内部版本[21]:无法执行 连接到服务器:net / http:TLS握手超时

答案 7 :(得分:-1)

只需使用带有关键字“控制台”的 Jenkins std 搜索(右上角):

console:"whatever you are looking for"