繁体   English   中英

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

[英]Jenkins runs imported python script before main python script

我有一个主要的构建脚本,每个詹金斯工作都执行。 该主脚本从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("Starting script...")
build.run()

在运行控制台之前,它会显示“启动脚本”,因此在控制台上运行良好。 不幸的是,在Jenkins中,它始终在显示主脚本中的任何内容之前始终在控制台中显示build.run()的输出。 我什至尝试将build.run()放在最底端的if语句中。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM