詹金斯:捕获错误跳到下一阶段,但仍然显示错误阶段失败

Jef*_*ner 4 jenkins-pipeline

我目前正在使用 JenkinscatchError来捕获某个阶段中是否发生错误,如果是,则跳到下一个阶段。

我想要展示的是,如果某个阶段发现错误,则在 Jenkins 中显示为红色失败),即使该阶段已跳到下一个阶段。

这是 Jenkins 管道阶段的编码方式,以捕获脚本失败时的错误:

    stage('test_run') {
        steps {
            catchError {
                sh """#!/bin/bash -l
                    ***

                    npm run test:run:reporter
                """
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我在 StackOverflow 中找到了这个解决方案: Jenkins: Ignore failure in pipeline build step

这个解决方案有效,但在 Jenkins 的运行中,失败的阶段是呈现Green(又名Success)。

Jenkins 运行表明它失败了:

詹金斯运行失败

以下阶段实际上是失败的原因,并且在捕获错误时被跳过,但是,此阶段显示绿色(成功)并且更愿意将其呈现为红色(失败)

跳过失败阶段,显示绿色成功

最后的后期操作显示为黄色不稳定),通常显示为绿色成功):

不稳定

感谢您的阅读,始终感谢您的帮助。

Das*_*kar 5

您可以使用

catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
  Add your commands
}
Run Code Online (Sandbox Code Playgroud)

添加您想要为构建和阶段结果设置的任何结果。

  • 我很好奇为什么 `buildResult: 'SUCCESS'` 会触发 **不确定**。“如果捕获到错误,则总体构建结果将设置为此值。请注意,构建结果只会变得更糟,因此如果当前结果不稳定或更糟,则无法将结果更改为 SUCCESS。使用 SUCCESS 或 null 来当捕获错误时,防止设置构建结果。” (2认同)