我有一个在TeamCity上运行Invoke-MsBuild的powershell脚本。在构建期间,我看到了一个“警告:未能构建”其中一个项目。然而,团队城市最终表示构建成功。如何强制TC退出并显示错误代码或至少报告构建失败。这是构建脚本的一部分。
18000
答案 0 :(得分:1)
TeamCity并不擅长捕获和报告从Powershell抛出的异常。我的所有Powershell脚本都包含了类似
的内容Try {
Write-Host "Attempting to build $SolutionPath"
$buildSucceeded = Invoke-MsBuild -Path $SolutionPath -MsBuildParameters $MSBuildParams -BuildLogDirectoryPath "$BuildPath\Logs" -KeepBuildLogOnSuccessfulBuilds
}
Catch [Exception] {
Write-Error ('Failed: ' + $_.Exception.Message)
Exit 1
}
通过退出非零来弥补问题。
我承认这很麻烦,有点令人不满意。我怀疑通过使用大多数(所有?)Powershell cmdlet支持的常规-ErrorAction
参数可以获得某些东西。 (话虽如此,我不确定Invoke-MsBuild -ErrorAction Stop
是否有效。)
答案 1 :(得分:1)
您可以在您的powershell脚本的开头添加$ErrorActionPreference = "Stop"
,这应该在出错时停止脚本执行并以非零代码退出。
$ErrorActionPreference
的默认设置为Continue
,这可能是您看到该行为的原因。您可以阅读更多here。