You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins流水线中用TextFinder捕获日志FAIL并终止任务

Jenkins流水线中用TextFinder捕获"FAIL"并终止任务

你的Jenkins流水线代码如下:

pipeline {
    agent {
        label labelValue
    }

    stages {
        stage("Git") {
            steps {
                script {
                    git branch: "develop",
                            credentialsId: "xxx",
                            url: "https://"
                }
            }
        }

        stage("Build") {
            steps {
                withMaven(jdk: 'openjdk-12_linux') {
                    sh 'mvn clean compile assembly:single'
                }
            }
        }        

        stage("Run") {
            steps {
                withMaven(jdk: 'openjdk-12_linux', maven: 'Maven 3.6.3') {
                    sh 'java -jar SomethingName.jar ${par1} ${par2} ${par3} ${BUILD_URL}'
                }
            }
        }

    }
}

当前问题:运行自动化测试Jar包时,日志出现"FAIL"代表测试失败,出现"SUCCESS"代表测试成功,但无论测试结果如何,任务始终显示成功。需要使用TextFinder捕获"FAIL"文本,在检测到错误时终止任务。

解决方案

首先确保Jenkins已安装pipeline-utility-steps插件,之后修改"Run"阶段的代码,通过textFinder步骤实现需求:

stage("Run") {
    steps {
        withMaven(jdk: 'openjdk-12_linux', maven: 'Maven 3.6.3') {
            sh 'java -jar SomethingName.jar ${par1} ${par2} ${par3} ${BUILD_URL}'
        }
    }
    post {
        always {
            textFinder(
                regexp: 'FAIL',
                alsoCheckConsoleOutput: true,
                failIfFound: true,
                unstableIfFound: false
            )
        }
    }
}

参数说明

  • regexp: 'FAIL':设置要匹配的目标文本为"FAIL"
  • alsoCheckConsoleOutput: true:指定检查Jenkins控制台的输出内容
  • failIfFound: true:一旦匹配到"FAIL",立即将任务标记为失败并终止流程
  • unstableIfFound: false:不将任务标记为不稳定状态,直接触发失败

你也可以将textFinder放在steps块内与sh命令同级,但放在post的always块中更可靠,能保证无论sh命令自身是否返回错误码,都会执行文本检查逻辑。

内容的提问来源于stack exchange,提问作者Mikhail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 13:03:11