У меня есть сборка TeamCity, и одним из шагов является вызов MSBuild файла .proj:
Runner type: MSBuild
Build file path: TestProject.proj
Targets: Test
внутри .proj у меня есть цели:
<Target Name = "DeployTestService">
<Message Text = "Deploying test service" />
<Exec Command = "powershell -Command "& { myUsefulPsScript.ps }"" />
</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 не смог отобразить это сообщение об ошибке [сообщение, которое я вижу в полном журнале]»?





Вам нужно использовать Формат вывода Teamcity. Например, каждый раз, когда начинается новый тест, выведите:
##teamcity[testStarted name='foo|'s test']
Таким образом, Teamcity будет знать, что было последним шагом или последним тестом перед сбоем приложения, и сможет соответствующим образом отформатировать вывод.