2014-01-09 59 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