如何在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
相关产品推荐
相关产品推荐

