2014-01-09 16 views
2

我们有一个Scala项目,我们使用SBT作为其构建工具。 我们的CI工具是TeamCity的,我们使用命令行自定义脚本选项与以下命令来构建项目:TeamCity的自定义脚本中的exitCode不正确

call %system.SBT_HOME%\bin\sbt clean package 

构建过程工作正常时,生成成功,但是,当编译失败 - 的TeamCity认为,该脚本退出exitCode 0而不是1预期,这导致TeamCity构建成功,虽然编译失败。

当我们运行在本地CMD我们看到,错误级别为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的认识的失败建立?

+0

如何检查cmd上的errorLevel? –

+0

回声%errorLevel% – Yosefki

+0

您可以使用相同的答案用于这个其他帖子:http://stackoverflow.com/a/23338173/684582 –

回答

0

尽量明确地退出:

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

试过:打印0,并存在0 – Yosefki

0

如果你不能得到的过程输出非零退出代码,那么你可以使用基于构建日志特定文本生成失败条件。有关文档,请参阅this页面,但实质上,如果在构建日志中找到error found文本,那么构建可能会失败。

+0

是的,我已经做到了。但是这个选项只适用于整个构建而不是构建步骤,但它仍然是一个可靠的解决方案。 – Yosefki