我如何从TeamCity构建中运行的Powershell脚本收到有意义的错误消息?

时间:2018-09-04 12:53:32

标签: powershell error-handling build continuous-integration teamcity

我有一个TeamCity构建,其中一个步骤是.proj文件的MSBuild调用:

Runner type: MSBuild
Build file path: TestProject.proj
Targets: Test

在.proj里面,我有目标:

<Target Name="DeployTestService">
    <Message Text="Deploying test service" />
    <Exec Command="powershell -Command &quot;&amp; { myUsefulPsScript.ps }&quot;" />
</Target>

<Target Name="Test">
   // other stuff, then
   <CallTarget Targets="DeployTestService" />
</Target>

,并且在大多数情况下效果很好。但是,如果Powershell脚本失败(引发了未处理的异常,并且我可以在完整的日志中看到其文本)并以非零代码退出,则在Teamcity构建结果中将看到以下内容:

 Tests passed: (some number); exit code 1

而构建树只是说:

Build failure condition (1)
 Process exited with code 1   
   [Time]Process exited with code 1

,直到获得完整的日志,我才真正知道哪个步骤失败了,以及如何准确。这并不是要解决最初的问题,而是要更快地找到错误的步骤。

是否有办法使Teamcity说类似“步骤N中的运行程序失败并显示此错误消息[我在完整日志中看到的消息]”?

1 个答案:

答案 0 :(得分:0)

您需要使用Teamcity output format。例如,每次新测试开始时,打印:

##teamcity[testStarted name='foo|'s test']

通过这种方式,Teamcity将知道应用程序崩溃之前的最后一步或最后一次测试是什么,并且它将能够相应地格式化输出。