2013-07-09 178 views
0

我有一個每個jenkins作業執行的主構建腳本。該主腳本從Jenkins獲取作業名稱,然後爲該作業名稱執行相關腳本。現在,我使用subprocess.check_output來調用相關的腳本。我在想,而不是這個,我應該只導入腳本,然後調用裏面的函數。我導入這樣的:Jenkins在主python腳本之前運行導入的python腳本

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

我也嘗試插入(-1,...)把它在我使用它的end.The方式是,我有一對夫婦的打印報表,在主腳本在執行這個函數之前。

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

這可以在控制檯上正常工作,因爲它在運行之前顯示「啓動腳本」。不幸的是,在Jenkins中,在顯示主腳本中的任何內容之前,它總是在控制檯中顯示build.run()的輸出。我甚至嘗試把build.run()放在最底部,在if語句中。

關於如何在正確的順序中在Jenkins中運行/顯示任何想法?

回答

0

子進程在退出時刷新其輸出緩衝區,但來自父項的打印仍在父項的緩衝區中。解決辦法是在運行子進程之前刷新父緩衝區:

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

非常感謝!解決了這個問題:) –