我有一个Jenkins的工作,有100多个版本。我需要搜索该作业的所有构建,以找到在控制台输出中具有特定字符串的构建。有插件吗?我该怎么做?
lf5gs5x21#
我经常使用Jenkins Script Console来完成这样的任务。Groovy plugin提供了脚本控制台,但如果您打算使用脚本控制台进行定期维护,您还需要Scriptler plugin,它允许您管理运行的脚本。在 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}" } }
nzk0hqpo2#
如果没有额外的要求,我会简单地在shell中完成,例如:
find $JENKINS_HOME/jobs/haystack -name log -exec grep -l needle {} \; \ | sed 's|.*/\(.*\)/log|\1|'
cuxqih213#
搜索所有作业的日志:我增强了@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}" } } }
nkkqxpd94#
感谢大家宝贵的解决方案。经过一些额外的研究,我发现Jenkins中有一个插件可以做到这一点。https://wiki.jenkins-ci.org/display/JENKINS/Lucene-Search这将保存控制台输出结果,用户可以在搜索框中进行搜索。
zmeyuzjn5#
有Log Parser Plugin突出显示日志中感兴趣的行(错误、警告、信息)将所述日志划分为区段,所述区段显示所述日志及其区段内的错误、警告和信息行的数目的概要。将错误和警告的摘要链接到完整日志的上下文中,以便在日志中查找感兴趣的行在生成页上显示错误和警告的摘要如果是旧日志,那么@jil有答案,假设你在Linux上。
kwvwclae6#
为了抛出另一个插件,this blog post向我指出了TextFinder plugin,它允许您在工作区文件或控制台输出中搜索文本,并在找到文本时将构建状态覆盖为成功/失败。最初的海报并没有说当找到文本时会发生什么,但正是搜索这个功能把我带到了这里。
zqdjd7g97#
要在所有Jenkins版本的控制台输出中搜索正则表达式文本,请在https://{jenkins url}/manage/script中运行以下脚本。它将打印作业和内部版本号+找到的第一个匹配行:
https://{jenkins url}/manage/script
def regex="any text or regular expression" for (job in Jenkins.instance.items) { for (build in job.builds) { try { def log = build.log def match = log =~ "\n(.*${regex}.*)\n" if (match) { println "Job [${job.name}] - Build [${build.id}]: ${match[0][0]}" } } catch (Exception e) { println e } } }
例如,在我的构建中搜索regex = "(TLS|Build).*timeout",我发现:作业[OSP-AWS] -构建[83]:构建超时:拨号tcp [::1]:6443:connect:连接被拒绝作业[OSP-GCP] -构建[21]:无法连接到服务器:net/http:TLS握手超时
regex = "(TLS|Build).*timeout"
hfyxw5xn8#
只需使用Jenkins std搜索(右上角)和关键字“console”:
console:"whatever you are looking for"
8条答案
按热度按时间lf5gs5x21#
我经常使用Jenkins Script Console来完成这样的任务。Groovy plugin提供了脚本控制台,但如果您打算使用脚本控制台进行定期维护,您还需要Scriptler plugin,它允许您管理运行的脚本。
在 Manage Jenkins -> Script Console 中,您可以编写一个groovy脚本,它会遍历作业的构建,寻找匹配的字符串:
nzk0hqpo2#
如果没有额外的要求,我会简单地在shell中完成,例如:
cuxqih213#
搜索所有作业的日志:
我增强了@DaveBacher的代码,使其可以在Jenkins脚本控制台中运行。帮助我找到多个作业中发生的偶发错误。
nkkqxpd94#
感谢大家宝贵的解决方案。经过一些额外的研究,我发现Jenkins中有一个插件可以做到这一点。
https://wiki.jenkins-ci.org/display/JENKINS/Lucene-Search
这将保存控制台输出结果,用户可以在搜索框中进行搜索。
zmeyuzjn5#
有Log Parser Plugin
突出显示日志中感兴趣的行(错误、警告、信息)
将所述日志划分为区段,所述区段显示所述日志及其区段内的错误、警告和信息行的数目的概要。
将错误和警告的摘要链接到完整日志的上下文中,以便在日志中查找感兴趣的行
在生成页上显示错误和警告的摘要
如果是旧日志,那么@jil有答案,假设你在Linux上。
kwvwclae6#
为了抛出另一个插件,this blog post向我指出了TextFinder plugin,它允许您在工作区文件或控制台输出中搜索文本,并在找到文本时将构建状态覆盖为成功/失败。
最初的海报并没有说当找到文本时会发生什么,但正是搜索这个功能把我带到了这里。
zqdjd7g97#
要在所有Jenkins版本的控制台输出中搜索正则表达式文本,请在
https://{jenkins url}/manage/script
中运行以下脚本。它将打印作业和内部版本号+找到的第一个匹配行:例如,在我的构建中搜索
regex = "(TLS|Build).*timeout"
,我发现:作业[OSP-AWS] -构建[83]:构建超时:拨号tcp [::1]:6443:connect:连接被拒绝
作业[OSP-GCP] -构建[21]:无法连接到服务器:net/http:TLS握手超时
hfyxw5xn8#
只需使用Jenkins std搜索(右上角)和关键字“console”: