22

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

4

8 回答 8

21

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

Manage Jenkins -> Script Console,您可以编写一个 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}"
  }
}
于 2016-03-23T23:28:35.580 回答
11

如果没有其他要求,我会简单地在 shell 中完成,例如:

find $JENKINS_HOME/jobs/haystack -name log -exec grep -l needle {} \; \
    | sed 's|.*/\(.*\)/log|\1|'
于 2016-03-23T22:10:51.387 回答
3

要在所有作业的日志中搜索:

我增强了 @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}"
    }
  }
}
于 2020-04-02T11:08:00.153 回答
3

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

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

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

于 2016-03-24T15:13:32.067 回答
1

只是为了抛出另一个插件,这篇博客文章向我指出了TextFinder 插件,它允许您在工作区文件或控制台输出中搜索文本,并在找到文本时将构建状态覆盖为成功/失败。

原始海报没有说明找到文本时会发生什么,但它是在搜索这个功能,才把我带到这里。

于 2018-07-09T13:49:53.230 回答
1

日志解析器插件

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

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

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

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

如果它是旧日志,那么假设您在 Linux 上,@jil 会给出答案。

于 2016-03-23T22:13:18.270 回答
0

要在所有Jenkins 作业中搜索正则表达式模式,并打印第一个匹配

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 握手超时

于 2020-10-12T12:14:48.227 回答
-1

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

console:"whatever you are looking for"
于 2021-03-10T12:49:21.523 回答