我正在使用带有多个测试脚本的Perl TAP :: Harness :: JUnit的Jenkins。在一个测试脚本完成之前,我无法让Jenkins刷新到控制台。它只是缓冲整个测试套件,并在完成后立即将其全部冲洗掉。我得到的例子如下:
- 11:56:19 1..2
- 11:56:19 ok 1 - Test1
- 11:56:19实际时间:11:55:59:现在睡20秒......
- 11:56:19实际时间:11:56:19
- 11:56:19 ok 2 - Test2
我已经花了两周时间在这上面,我知道所有正常的解决方案,但它们似乎都没有用。我在我的perl TAP :: Harness :: JUnit中设置了merge => 1
,我知道STDOUT与STDERR交织在一起,但我已经尝试了所有的刷新方式,并且在Jenkins控制台输出上没有任何作用。
请注意,如果我在机器的命令行中尝试使用相同的线束,则所有内容都会立即刷新。我已尝试stdbuf -i0 -o0 -e0
,stdbuf -oL -eL
,$|=1
,autoflush STDOUT 1
,打印到文件CMD 1>console.log 2>&1
。什么都不行
这在执行性能指标时很烦人,因为我无法将此时的CPU上的高压与特定测试的时间戳相关联,因为时间戳是没有意义的。然而,最令人讨厌的含义是,当测试中间的测试挂起或崩溃时,没有打印输出,所以我不知道为什么测试崩溃。