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}")
                }

请注意,这可以 运行 直接分阶段进行,这意味着您无需等待所有阶段运行。