Jenkins声明式管道:扫描日志,如果作业包含失败消息,则使作业失败

时间:2019-02-12 22:12:30

标签: jenkins jenkins-declarative-pipeline

我需要扫描Jenkins日志,并且日志中是否有类似“ Failed”的内容。詹金斯不应该继续并将工作标记为失败。

3 个答案:

答案 0 :(得分:1)

您可能需要log-parser插件。

它解析由Jenkins构建生成的控制台日志。

您有两个有用的选择:

  • “在警告时标记构建不稳定”选项:检查已分析的警告将构建标记为“不稳定”。

  • “将构建标记为错误时失败”选项:检查已分析的错误将构建标记为“失败”。

看看:https://wiki.jenkins.io/display/JENKINS/Log+Parser+Plugin

对于声明性管道,请尝试:

step([$class: 'LogParserPublisher', failBuildOnError: true, parsingRulesPath: '<parser rule file>', useProjectRule: false])

答案 1 :(得分:0)

我在解析器配置中遇到了这样的建议,使它失败了:

# 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/

有人对如何实现这一目标有想法吗?

答案 2 :(得分:0)

使用findText很容易。

                // stop if failure found
                findText alsoCheckConsoleOutput: true, notBuiltIfFound: true, regexp: "${KEY_ERROR_MSG}"

                if (currentBuild.result == 'NOT_BUILT') {
                    error("${KEY_ERROR_MSG}")
                }

请注意,此操作可以分阶段直接运行,这意味着您无需等待所有阶段都可以运行此命令。