简单的python脚本:
for i in range(0, 5):
print "ok"
sys.stderr.write('err\r\n')
在TeamCity下执行此脚本时(构建步骤),在Build Log选项卡中将显示以下输出:
ok
err
ok
ok
ok
err
ok
err
err
err
消息完全错误地随机排列。
[请建议如何使消息按写入输出的顺序排列。
谢谢。
这是known issue,请加注星标/投票。
如果只想写stdout和stderr来区分消息和错误,则可以尝试使用服务消息:http://confluence.jetbrains.net/display/TCD65/Build+Script+Interaction+with+TeamCity。他们仅使用一个通道来区分不同的消息,并且不会出现错误的顺序。
这里是bash脚本的部分解决方法:
sync() {
(
{ set +x; } 2> /dev/null # silently disable xtrace
sleep 0.1 # synchronize stdout and stderr for TeamCity
"${'$'}@"
local exit_code=${'$'}?
sleep 0.1 # synchronize stdout and stderr for TeamCity
return ${'$'}exit_code
)
}
现在您可以至少在重要命令之前和之后同步stdout
和stderr
:
set -x
sync wget http://examples.com/
sync bash myscript.sh arg1 arg2
在此更改之前,TeamCity可以在此命令打印的某些行之后显示打印的bash命令。