我有一个拥有100多个版本的Jenkins工作。我需要搜索该作业的所有构建,以查找在控制台输出中具有特定字符串的构建。那有插件吗?我该怎么做?
答案 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)
突出显示日志中感兴趣的行(错误,警告,信息)
将日志划分为多个部分,显示日志及其部分中的错误,警告和信息行数的摘要。
将错误和警告的摘要链接到完整日志的上下文中,以便在日志中轻松找到感兴趣的行
在构建页面上显示错误和警告的摘要
如果它是旧日志,那么@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"