Jenkins中的一个作业调用我的python脚本,我想在其中调用make
来编译我的UT代码,如果编译错误如“make:*** []错误则引发sys.exit(1)
1“发生。
我还需要实时打印输出。
这是我的python脚本:
make_process = subprocess.Popen("make clean all;", shell=True, stdout=subprocess.PIPE, stderr=sys.stdout.fileno())
while True:
line = make_process.stdout.readline()
if not line:break
print line, #output to console in time
sys.stdout.flush()
但是如何捕获make
错误并让这个python脚本失败?
注意:
更新 结果是makefile问题。查看已接受答案的评论。但对于这个蟒蛇问题,五角大楼给出了正确答案。
答案 0 :(得分:2)
您可以通过
检查 make 流程的返回值make_process.poll()
如果进程仍在运行,则返回“None”,如果已完成,则返回错误代码。如果您只想让输出在控制台上结束,则无需手动执行此操作 无论如何输出都会进入控制台,可以这样做:
make_process = subprocess.Popen("make clean all", stderr=subprocess.STDOUT)
if make_process.wait() != 0:
something_went_wrong();