【发布时间】:2012-07-22 20:02:38
【问题描述】:
詹金斯很新,我有一个简单但烦人的问题。当我在 Jenkins 上运行作业(构建)时,我触发了 ruby 命令来执行我的测试脚本。
问题是 Jenkins 没有从控制台实时显示输出。这是触发日志。
Building in workspace /var/lib/jenkins/workspace/foo_bar
No emails were triggered.
[foo_bar] $ /bin/sh -xe /tmp/hudson4042436272524123595.sh
+ ruby /var/lib/jenkins/test-script.rb
基本上它会挂在这个输出上,直到构建完成,而不是只显示完整的输出。有趣的是,这不是一致的行为,有时它可以正常工作。但大多数时候没有实时控制台输出。
Jenkins 版本:1.461
【问题讨论】:
-
您运行的服务器有多强大,执行此脚本需要多长时间?这听起来像是由于服务器过载而导致的延迟。当我的 Jenkins master 满负荷运行时,我也看到了类似的症状。
-
感谢您的关注,这实际上是有道理的。在这种情况下,我们谈论的是 EC2 实例
small、aws.amazon.com/ec2/instance-types,但它只是进程运行。会不会是你需要的更多? -
这取决于有多少作业正在运行,但是是的,如果您同时在一个小型实例上运行多个作业,我预计会出现延迟。
-
我有一个类似的问题,但是,这台机器超出了规格且未充分利用。在jenkins之外运行python脚本也可以按预期实时工作。该作业调用一个python脚本,该脚本跟踪另一个进程的日志文件。日志文件实时更新,jenkins 输出以块的形式转储,就好像它在等待填充缓冲区一样。
-
嗨 Craig,你说得对,缓冲输出是个问题。使用
STDOUT.sync=true解决了这个问题。
标签: continuous-integration jenkins