在TeamCity中获取Build Step退出代码

时间:2012-02-16 10:31:33

标签: msbuild teamcity msdeploy

我有一个构建版,其中包含许多构建步骤,可以使用msdeploy通过MSBuild脚本编译,运行测试和打包应用程序。 目前,如果我的任何测试失败,程序包仍然会被构建,但是我希望构建在故障点停止,或者能够将变量传递到MSBuild脚本,该脚本是测试的退出代码/ compile阶段,并根据该变量的值创建包。 目前,我无法找到包含此信息的任何变量..

2 个答案:

答案 0 :(得分:1)

设置StopOnFirstFailure=true

  

如果是,如果其中一个项目无法构建,则不再有项目   将建成。

此外,定义build parameters并有条件地设置 TeamCitySetStatus

答案 1 :(得分:1)

如果您为每个步骤都有单独的步骤和单独的构建脚本,那么在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