Jenkins 声明式管道:扫描日志并在出现失败消息时使作业失败
Jenkins Declarative pipeline: scan logs and fail the job if it has a failure message
我需要扫描 Jenkins 日志,看看日志中是否有类似 "Failed" 的内容。 Jenkins 不应继续并将作业标记为失败。
log-parser
插件可能就是您所需要的。
它解析由 Jenkins 构建生成的控制台日志。
您有两个有用的选择:
"Mark build Unstable on Warning" 选项:检查是否已解析警告标记构建 'unstable'。
"Mark build Failed on Error" 选项:检查是否有解析错误标记构建 'failed'.
看看:https://wiki.jenkins.io/display/JENKINS/Log+Parser+Plugin
对于声明式管道,尝试:
step([$class: 'LogParserPublisher', failBuildOnError: true, parsingRulesPath: '<parser rule file>', useProjectRule: false])
我通过在解析器配置中这样设置上面的建议失败了:
# ERRORS
error /make to fail/
在 Jenkins 管道中是这样的:
node ('') {
try {
node {
echo 'make to fail'
}
} finally {
node {
step([$class: 'LogParserPublisher', failBuildOnError: true, parsingRulesPath: '/opt/jenkins/log_parsers/log_parser', useProjectRule: false])
}
}
}
无论如何都找不到通过在解析器配置中使用类似这样的东西来构建 'UNSTABLE' 的方法:
# WARNINGS
warning /make to unstable/
有人知道如何实现吗?
使用 findText 很容易。
// stop if failure found
findText alsoCheckConsoleOutput: true, notBuiltIfFound: true, regexp: "${KEY_ERROR_MSG}"
if (currentBuild.result == 'NOT_BUILT') {
error("${KEY_ERROR_MSG}")
}
请注意,这可以 运行 直接分阶段进行,这意味着您无需等待所有阶段运行。
我需要扫描 Jenkins 日志,看看日志中是否有类似 "Failed" 的内容。 Jenkins 不应继续并将作业标记为失败。
log-parser
插件可能就是您所需要的。
它解析由 Jenkins 构建生成的控制台日志。
您有两个有用的选择:
"Mark build Unstable on Warning" 选项:检查是否已解析警告标记构建 'unstable'。
"Mark build Failed on Error" 选项:检查是否有解析错误标记构建 'failed'.
看看:https://wiki.jenkins.io/display/JENKINS/Log+Parser+Plugin
对于声明式管道,尝试:
step([$class: 'LogParserPublisher', failBuildOnError: true, parsingRulesPath: '<parser rule file>', useProjectRule: false])
我通过在解析器配置中这样设置上面的建议失败了:
# ERRORS
error /make to fail/
在 Jenkins 管道中是这样的:
node ('') {
try {
node {
echo 'make to fail'
}
} finally {
node {
step([$class: 'LogParserPublisher', failBuildOnError: true, parsingRulesPath: '/opt/jenkins/log_parsers/log_parser', useProjectRule: false])
}
}
}
无论如何都找不到通过在解析器配置中使用类似这样的东西来构建 'UNSTABLE' 的方法:
# WARNINGS
warning /make to unstable/
有人知道如何实现吗?
使用 findText 很容易。
// stop if failure found
findText alsoCheckConsoleOutput: true, notBuiltIfFound: true, regexp: "${KEY_ERROR_MSG}"
if (currentBuild.result == 'NOT_BUILT') {
error("${KEY_ERROR_MSG}")
}
请注意,这可以 运行 直接分阶段进行,这意味着您无需等待所有阶段运行。