Scala TeamCity自定义脚本中的exitCode不正确

Scala TeamCity自定义脚本中的exitCode不正确,scala,teamcity,sbt,Scala,Teamcity,Sbt,我们有一个Scala项目,我们使用SBT作为它的构建工具。 我们的CI工具是TeamCity,我们使用命令行自定义脚本选项和以下命令构建项目: call %system.SBT_HOME%\bin\sbt clean package 生成成功时,生成过程工作正常,但是,当编译失败时-TeamCity认为脚本退出时exitCode为0,而不是预期的1,这会导致TeamCity生成成功,尽管编译失败 当我们在本地cmd上运行相同的命令时,我们看到errorLevel为1 生成日志的相关部分: [1

我们有一个Scala项目,我们使用SBT作为它的构建工具。 我们的CI工具是TeamCity,我们使用命令行自定义脚本选项和以下命令构建项目:

call %system.SBT_HOME%\bin\sbt clean package
生成成功时,生成过程工作正常,但是,当编译失败时-TeamCity认为脚本退出时exitCode为0,而不是预期的1,这会导致TeamCity生成成功,尽管编译失败

当我们在本地cmd上运行相同的命令时,我们看到errorLevel为1

生成日志的相关部分:

[11:33:44][Step 1/3] [error] trait ConfigurationDomain JsonSupport extends CommonFormats {
[11:33:44][Step 1/3] [error]                           ^
[11:33:44][Step 1/3] [error] one error found
[11:33:45][Step 1/3] [error] (compile:compile) Compilation failed
[11:33:45][Step 1/3] [error] Total time: 12 s, completed Jan 9, 2014 11:33:45 AM
[11:33:45][Step 1/3] Process exited with code 0

如何让TeamCity识别构建失败?

尝试使用以下方法明确退出:

call %system.SBT_HOME%\bin\sbt clean package
echo the exit code is %errorlevel%
exit /b

如果无法让进程输出非零退出代码,则可以根据生成日志中的特定文本使用生成失败条件。有关文档,请参见第页,但本质上,如果在生成日志中找到文本
error found
,您可以使生成失败。

尝试:打印0,并与0一起存在。是的,我已经完成了。但是这个选项只适用于整个构建,而不是构建步骤,它仍然是一个可靠的解决方案。如何检查cmd上的errorLevel?您可以使用与其他帖子相同的答案: