Jenkins Declarative pipeline:扫描日志并在作业有失败消息时使其失败

k75qkfdt  于 2023-10-17  发布在  Jenkins
关注(0)|答案(3)|浏览(138)

我需要扫描Jenkins日志,如果它在日志中有类似“失败”的东西。Jenkins不应该继续并将作业标记为失败。

pdsfdshx

pdsfdshx1#

log-parser插件可能是你所需要的。
它解析Jenkins构建生成的控制台日志。
您有两个有用的选项:

  • “Mark build Unstable on Warning”选项:选中此选项可以让解析的警告将构建标记为“unstable”。
  • “错误时标记构建失败”选项:检查以使分析的错误标记构建'失败'。

看一看:https://wiki.jenkins.io/display/JENKINS/Log+Parser+Plugin
对于声明性管道,请尝试:

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

b0zn9rqh2#

使用Text Finder plugin的findText很容易。

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

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

请注意,这可以在stage中直接运行,这意味着您不需要等待所有stage来运行它。
示例如何搜索错误消息,将步骤标记为失败并将构建设置为不稳定(我使用此方法检查ftp Publisher的连接问题):

// Search console log for error text and set build unstable if found
    findText(textFinders: [
         textFinder(
             regexp: 'ERROR: Exception when publishing', 
             alsoCheckConsoleOutput: true, 
             buildResult: 'UNSTABLE'
         )
    ])  
    script {
        if (currentBuild.result == 'UNSTABLE') {
            catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') {
                error("FTP publishing build artifacts failed") 
            }
        }
    }
f4t66c6m

f4t66c6m3#

我在解析器配置中这样做,上面的提议失败了:

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

有人知道如何做到这一点吗?

相关问题