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

mccptt67  于 2024-01-05  发布在  Java
关注(0)|答案(1)|浏览(202)

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

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

字符串

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

  1. #!/bin/bash
  2. # exit immediately if any command fails
  3. set -e
  4. java MyJavaProgram
  5. exit 0


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

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


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

vmjh9lq9

vmjh9lq91#

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

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

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

自由风格:构建步骤

  1. cd /tmp/sandbox/
  2. cat /tmp/sandbox/Demo.java
  3. sh /tmp/sandbox/myscript.sh

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

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

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


带 shell :


的数据
与Jenkins


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

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


带 shell :

与Jenkins

展开查看全部

相关问题