2013-07-09 2 views
0

모든 jenkins 작업이 실행하는 기본 빌드 스크립트가 있습니다. 이 기본 스크립트는 Jenkins의 작업 이름을 가져온 다음 해당 작업 이름에 대한 관련 스크립트를 실행합니다. 지금 당장, subprocess.check_output을 사용하여 관련 스크립트를 호출합니다. 대신이 스크립트 대신 스크립트를 가져 와서 함수를 호출해야한다고 생각했습니다. 나는이 같은 가져올 :Jenkins는 기본 파이썬 스크립트보다 먼저 가져온 파이썬 스크립트를 실행합니다.

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() 

실행하기 전에 "시작 스크립트"가 표시되므로 콘솔에서 정상적으로 작동합니다. 유감스럽게도 젠킨스에서는 콘솔에서 build.run()의 출력을 보여 주 스크립트에서 아무것도 표시하지 않습니다. 심지어 if-statement 등에서 맨 아래에 build.run()을 두어 보았습니다.

젠킨스를 올바른 순서로 실행/표시하는 방법에 대한 아이디어가 있으십니까?

답변

0

자식 프로세스는 종료시 출력 버퍼를 플러시하지만 부모의 인쇄물은 여전히 ​​부모의 버퍼에 있습니다. 해결 방법은 하위를 실행하기 전에 상위 버퍼를 플러시하는 것입니다.

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

감사합니다. 그게 문제를 해결 :) –

관련 문제