简单的python脚本:
for i in range(0, 5):
print "ok"
sys.stderr.write('err\r\n')
在TeamCity(构建步骤)下执行此脚本时,以下输出显示在“构建日志”选项卡中:
ok
err
ok
ok
ok
err
ok
err
err
err
消息完全按随机顺序排列。
请建议如何使消息按照写入输出的顺序进行。
感谢。
答案 0 :(得分:1)
这是known issue,请注明/投票。
答案 1 :(得分:1)
如果您只想写入stdout和stderr来区分消息和错误,可以尝试使用服务消息:http://confluence.jetbrains.net/display/TCD65/Build+Script+Interaction+with+TeamCity。他们只使用一个频道来区分不同的消息,而且输入顺序不正确。
答案 2 :(得分:0)
这是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命令。