2012-02-16 73 views
0

我有一個構建,其中包含許多構建步驟,可以編譯,運行測試,並通過MSBuild腳本使用msdeploy打包應用程序。 當前,如果我的任何測試失敗,包仍然會生成,但是我希望生成要麼在故障點停止,要麼能夠將變量傳遞到MSBuild腳本中,該腳本是測試/編譯階段,並根據該變量的值創建包。 目前,我還沒有能夠找到包含這些信息的任何變量..在TeamCity中獲取構建步驟退出代碼

回答

1

設置StopOnFirstFailure=true

如果爲真,當其中一個項目編譯失敗,沒有更多的項目 將建。

此外,限定build parameters和有條件地設置TeamCitySetStatus

+0

- 對不起,應該已經解釋了我的設立。我有一個sln runner編譯,MSTest Runner運行測試,並運行MSBuild進行打包。我所追求的是來自sln亞軍和/或mstest亞軍的輸出傳入msbuild亞軍 – 2012-02-16 14:30:40

+0

現在很明顯。我已經更新了答案。希望能幫助到你。 – KMoraz 2012-02-16 14:57:05

1

如果您在每個步驟都有單獨的步驟和單獨的構建腳本,那麼在teamcity中這很容易實現。但是,如果您使用一個腳本來完成每一件事(構建,測試,打包和部署)並且只有一個teamcity步驟來調用腳本,那麼它變得非常困難,因爲您將不得不添加大量的try和catch將無法處理不可捕捉的錯誤。我建議使用psake。要使用psake,您需要有2個腳本。第一個是由teamcity運行的。在第一個腳本中,您可以導入psake模塊並調用主要腳本,它爲您執行所有操作。如果第二個腳本在任何地方失敗,它會停止腳本(前提是您的代理擁有stoponfailure PowerShell策略)。第二個腳本將停止並返回到第一個腳本。但第一個腳本不會將其視爲失敗,並會將構建視爲成功。爲了解決這個問題,你需要在第一個腳本中添加一段代碼。

Import-Module .\psake\psake.psm1 

Invoke-Psake .\build-steps.ps1 @args 

if($psake.build_success -eq $false){ 
    write-host "There was an error running psake script" 
    exit 1 
} 
Remove-Module psake 

Powershell exit code is always 0 in teamcity build step

相關問題