Pretty new to Jenkins and I have simple yet annoying problem. When I run job (Build) on Jenkins I am triggering ruby command to execute my test script.
Problem is Jenkins is not displaying output in real time from console. Here is trigger log.
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
Basically it hangs on this output until build is complete than it just shows full output. Funny thing is this is not consistent behavior, sometimes it works as it should. But most of the time there is no real time console output.
Jenkins version: 1.461
Jenkins stores the console log on master. If you want programmatic access to the log, and you are running on master, you can access the log that Jenkins already has, without copying it to the artifacts or having to GET the http job URL.
To clarify some of the answers.
ruby
or python
or any sensible scripting language will buffer the output; this is in order to minimize the IO; writing to disk is slow, writing to a console is slow...flush()
'ed automatically after you have enough data in the buffer with special handling for newlines. e.g. writing a string without newline then sleep()
would not write anything until after the sleep()
is complete (I'm only using sleep
as an example, feel free to substitute with any other expensive system call).e.g. this would wait 8 seconds, print one line, wait 5 more seconds, print a second line.
from time import sleep def test(): print "ok", time.sleep(3) print "now", time.sleep(5) print "done" time.sleep(5) print "again" test()
for ruby
, STDOUT.sync = true
, turns the autoflush
on; all writes to STDOUT
are followed by flush()
. This would solve your problem but result in more IO.
STDOUT.sync = true
for python
, you can use python -u
or the environment variable PYTHONUNBUFFERED
to make stdin/stdout/stout
not buffered, but there are other solutions that do not change stdin
or stderr
export PYTHONUNBUFFERED=1
for perl
, you have autoflush
autoflush STDOUT 1;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With