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

需求:出现指定编译错误时终止Jenkins Pipeline并排查语法问题

Jenkins Pipeline 问题解决与需求实现

你的脚本语法错误源于混淆了Groovy(Jenkins Pipeline的核心语法)与Shell脚本的if逻辑写法,而且仅通过退出码判断也未必能满足“检测特定错误字符串就终止流水线”的需求——部分场景下npm构建出现类型错误时可能仍返回0退出码。

以下是修正并满足需求的Pipeline脚本:

stage('Dev Build') {
    steps {
        script {
            // 执行构建命令,同时捕获输出内容与退出状态
            def buildResult = sh(
                script: 'npm run build:dev',
                returnStdout: true,
                returnStatus: true
            )
            
            // 检测输出中是否存在目标错误字符串
            if (buildResult.stdout.contains('Compiled with the following type errors')) {
                error('构建触发类型错误,流水线终止') // 抛出错误,强制终止流水线
            }
            
            // 可选:额外检查命令退出码,双重保障构建状态
            if (buildResult.exitCode != 0) {
                error('构建命令执行失败,流水线终止')
            }
            
            echo 'npm build:dev 执行成功'
        }
    }
}

核心说明

  • 语法修正:用Groovy的script块包裹逻辑,通过sh步骤的returnStdout和returnStatus参数,同时获取命令的输出内容与退出码(此时sh返回一个包含stdout和exitCode属性的对象)。
  • 需求匹配:直接检查构建输出文本是否包含指定错误字符串,一旦匹配就调用error步骤抛出错误,Jenkins会自动终止流水线并标记为失败。
  • 双重校验:保留退出码检查作为额外保障,避免出现输出未捕获到错误但命令实际执行失败的极端场景,可根据实际情况选择保留或移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:57:00