Jenkins在主python脚本之前运行导入的python脚本

时间:2013-07-09 13:21:30

标签: python jenkins python-import

我有一个主构建脚本,每个jenkins作业都会执行。此主脚本获取作业名称(来自Jenkins),然后执行该作业名称的相关脚本。现在,我正在使用subprocess.check_output来调用相关的脚本。我想的是,我应该只导入脚本,然后调用里面的函数。我这样导入它:

sys.path.insert(0,os.path.abspath(importLocation))
print("path", sys.path, os.path.abspath(importLocation))
import build

我还尝试使用insert(-1,...)将它放在最后。我使用它的方式是在执行此函数之前我在主脚本中有几个print语句。

print("Starting script...")
build.run()

这在控制台上工作正常,因为它在运行之前显示“Starting script”。不幸的是,在Jenkins中,它总是在显示build.run()的输出之前在主脚本中显示任何内容。我甚至尝试将build.run()置于最底层,使用if语句等。

关于如何以正确的顺序在Jenkins中运行/显示任何想法?

1 个答案:

答案 0 :(得分:0)

子进程在退出时刷新其输出缓冲区,但父进程的打印仍在父缓冲区中。解决方案是在运行子缓冲区之前刷新父缓冲区:

print("Starting script...")
sys.stdout.flush()
build.run()