java - Jenkins 在 Scala 失败时报告成功

标签 java scala jenkins

我刚刚尝试使用 Jenkins 并建立了几个项目。一个特别的调用 shell 脚本,并且正确地提取该脚本的退出代码,产生通过/失败。然而,当我从命令行调用 Scala 时,无论发生什么,它都会通过。

在执行 shell 框中:

/opt/scala/2.9.1/bin/scala sdfsdfsd
Exception in thread "main" java.lang.RuntimeException: 
Cannot figure out how to run target: sdfsdfsd
... (stack trace removed)
Finished: SUCCESS

然而,用 Java 做同样的事情会失败:

/opt/java/jdk1.7.0/bin/java sdfdfsd
Error: Could not find or load main class sdfdfsd
Finished: FAILURE

当从 bash 运行时(使用 echo $?),这两者都会产生 1 的退出代码

我是不是遗漏了什么或者这是一个错误?

编辑:

有趣的是,我在使用 ant exec 时看到了相同的行为 - 当我调用包含对 scala 的无效调用的 shell 脚本时,我得到了预期的错误代码,但是通过 ant(使用 failonerror='true')我看到了零和构建成功。

谢谢

最佳答案

这是一个已知错误 Scala eats exit code when piping stdin , 固定在后备箱中。

要修补您的系统,修复非常简单,在 $SCALA_HOME/bin/scala 脚本中,第 25 行

function onExit() {
  if [[ "$saved_stty" != "" ]]; then
    restoreSttySettings
    exit $scala_exit_status
  fi
}

将导出移到 if 之外:

function onExit() {
  if [[ "$saved_stty" != "" ]]; then
    restoreSttySettings
  fi
  exit $scala_exit_status
}

这将解决您的问题(实际上在 ant 中也是如此,但您必须为 scalac 做同样的事情)。

关于java - Jenkins 在 Scala 失败时报告成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8254362/

相关文章:

java - 当我们使用一对多关系的两侧和一侧时

java - 缺少 <some_project> 的 POM,没有可用的依赖项信息

tomcat - 您在 Jenkins 上同时运行的最大作业数是多少,您的服务器的系统规范是什么,您的 CATALINA_OPTS 是什么?

Scala:折叠二维数组

java - "spark.memory.fraction"好像没有作用

scala - 如何将一张 map 中的值与另一张 map 中的值相乘?

hudson - jenkins什么时候读取config.xml?

java - junit 中的 findbugs "Nonnull field is not initialized"错误不正确

java - 创建多个线程将文件写入磁盘,Java

java - Spring Boot H2 db 显示没有记录