Jenkins构建shell脚本调用java程序的结果

mccptt67  于 5个月前  发布在  Java
关注(0)|答案(1)|浏览(71)

我希望我的Jenkins构建失败,如果调用Java程序的shell脚本失败。
java程序捕获任何异常并以**-1**退出

catch (Throwable e) {
    System.err.println(e.getMessage());
    e.printStackTrace();
    System.exit(-1);
}

字符串

myscript.shbash脚本调用java程序如下:

#!/bin/bash

# exit immediately if any command fails
set -e

java MyJavaProgram

exit 0


Jenkins只是使用了一个Execute shell构建步骤,命令如下:

cd /home/jenkins/deployments/Scripts
sh myscript.sh


然而,在我的Jenkins控制台日志中,我可以看到一条异常消息和堆栈跟踪,但整个jenkins构建显示为Finished:SUCCESS
我错过什么了吗?

vmjh9lq9

vmjh9lq91#

你应该有一个错误的配置。Jenkins符合标准:

  • 0作为退出代码:表示成功
  • 非零退出代码:表示错误

我试过了,Jenkins(最新2023版本:2.426.1)按预期工作。在新作业中复制此操作

自由风格:构建步骤

cd /tmp/sandbox/
cat /tmp/sandbox/Demo.java
sh /tmp/sandbox/myscript.sh

字符串
完整的作业配置在这里:
https://i.stack.imgur.com/0wjrx.png

作业结束,0为退出码时为成功

public class Demo {
  public static void main(String args[]) throws Exception {
    System.out.println("Im the java program");
    System.exit(0);
  }
}


带 shell :


的数据
与Jenkins


如果退出码为非零,作业将以失败结束

public class Demo {
  public static void main(String args[]) throws Exception {
    System.out.println("Im the java program");
    System.exit(-1);
  }
}


带 shell :

与Jenkins

相关问题