跳过正文
Background Image
  1. Posts/

Jenkins 执行 Shell 如果返回值不为0,作业(Job)停止并失败怎么办?

·393 字·1 分钟· ·
沈显鹏
作者
沈显鹏
目录

《Jenkins Tips 3》—— 每期用简短的图文描述一个 Jenkins 小技巧。

问题
#

在使用 Jenkins pipeline 时,如果 Shell 的返回值不为零(也就是 Shell 命令执行时有错误),Jenkins Job 默认会标记当前的 stage 为失败。因此整个 Job 也会失败。

在有些时候我们希望 Shell 虽然执行失败返回的不为零,但希望Jenkins Job 在执行成功后,要显示成功状态。

例如:通过 Shell 命令列出以 fail-list- 开头的文件,如果存在则通知用户,如果不存在则不通知用户。

ls -a fail-list-*

默认情况是执行如上命令导致了整个 Job 失败。

失败 log

解决
#

经过一番调查,使用以下代码片段解决了如上问题。

stage("Send notification") {
  steps {
    script {
      def fileExist = sh script: "ls -a fail-list-* > /dev/null 2>&1", returnStatus: true
      if ( fileExist == 0 ) {
        // send email to user
      }else {
        // if not found fail-list-* file, make build status success.
        currentBuild.result = 'SUCCESS'
      }
    }
  }
}

分析
#

在执行 Shell 时,添加了 returnStatus: true。这是将状态码返回并保存起来,然后与 0 进行比较。

如果不等于 0,如果不添加 currentBuild.result = 'SUCCESS',Jenkins 的整个 Job 还是会标记为失败状态。添加后,人为的忽略错误,将 Job 状态置为成功。

相关文章

如何通过 Jenkins 进行资源的锁定和释放
·901 字·2 分钟
本文介绍了如何使用 Jenkins 的 Lockable Resources 插件来管理和锁定资源,确保在多任务环境中资源的独占性和安全性。
通过 Jenkins 来提交修改的代码 git push by Jenkins
·439 字·1 分钟
如何通过 Jenkins Pipeline 脚本来提交修改的代码到 Git 仓库,包括克隆仓库、修改代码和推送更改等步骤。
Jenkins Linux Agent 配置
·353 字·1 分钟
本文提供了 Jenkins Linux Agent 的逐步配置指南,包括 Java 运行时的准备、节点创建以及常见问题的排查方法。
Jenkins Windows Agent 配置
·608 字·2 分钟
本文提供 Jenkins Windows Agent 的详细配置步骤,包括 Java 运行时准备、节点创建以及常见问题的排查方法。
Jenkinsfile 配置
·256 字·1 分钟
本文介绍了如何使用 Jenkinsfile 配置 Jenkins Pipeline,包括构建、测试和发布阶段的示例,以及如何处理邮件通知。
将 Jenkins Shell 返回的字符串处理为字符数组
·600 字·2 分钟
如何在 Jenkins Pipeline 中将 Shell 返回的字符串处理为字符数组,以便在后续步骤中进行处理和使用。