Reputation: 303
I have a Python script print strings. Now when run it in Jenkins I didn't see the printed strings in Jenkins Builds' Console Output.
Anyway to achieve that?
Upvotes: 15
Views: 23909
Reputation: 11728
The accepted answer got me on the right track, however in my case, a shell script that Jenkins was running was capturing the output of the python script in a subshell to a variable i.e. a=$(python_script)
, so it was not being echoed....
To solve the problem I just had to log to stderr instead of stdout, i.e.
import sys
sys.stderr.write("my info\n")
sys.stdout.flush()
Upvotes: 0
Reputation: 432
Try using -u
(unbuffered) option when running the python script.
python -u my_script.py
Upvotes: 21
Reputation: 605
I believe that what you need to do is a flush
, try:
import sys
sys.stdout.flush()
It should help.
Upvotes: 2
Reputation: 27485
Any output to stdout
from a process spawned by Jenkins should be captured by Console Output. One caveat is that it won't be displayed until a newline character is printed, so make sure your lines are terminated.
If you are launching python in some weird way that dis-associates it from Jenkins parent process, then I can't help you.
Upvotes: 5