当Scala失败时,Jenkins报告成功

时间:2011-11-24 08:57:12

标签: 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')我看到零和建立成功。

由于

1 个答案:

答案 0 :(得分:6)

这是一个已知的错误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做同样的事情)。