如何在Jenkins控制台输出中获取Python打印结果
我有一个Python脚本,它会打印一些字符串。现在我在Jenkins中运行这个脚本时,发现Jenkins的构建控制台输出里没有看到这些打印的字符串。
有没有办法能让它显示出来呢?
4 个回答
0
接受的答案让我找到了正确的方向,不过在我的情况下,Jenkins运行的一个脚本把Python脚本的输出放到了一个子进程的变量里,也就是用这种方式:a=$(python_script)
,所以输出没有显示出来……
为了解决这个问题,我只需要把日志输出到错误输出流,而不是正常输出流,也就是这样做:
import sys
sys.stderr.write("my info\n")
sys.stdout.flush()
2
我觉得你需要做的是一个 flush
操作,试试这个:
import sys
sys.stdout.flush()
这样应该会有帮助。
5
从Jenkins启动的任何进程输出到stdout
的内容都会被控制台输出捕获。不过,有一点需要注意的是,只有在输出中包含换行符的时候,这些内容才会显示出来,所以一定要确保你的每一行都以换行符结束。
如果你以某种奇怪的方式启动Python,导致它和Jenkins的父进程失去关联,那我就帮不了你了。
21
试着在运行 Python 脚本的时候加上 -u
这个选项,它的意思是无缓冲。
你可以这样运行:python -u my_script.py