2014-03-28 37 views
4

我通過腳本運行的後臺進程,當詹開始建設這個腳本調用。然而,jenkins構建卡住了,看着控制檯看起來正在運行該進程並等待它完成。一個節點上,通過對詹金斯的腳本永久運行後臺進程,讓詹金斯建立成功

這個過程永遠不會完成,認爲這是一個服務器聽其client.Every構建我觸發殺死服務器進程和重新啓動的過程中,所以我完全處理該情況。

有什麼辦法,我可以成功建立jenkins?

回答

5

具體細節取決於你的操作系統(你沒告訴),但詹金斯wiki有一個關於這個頁面:https://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build

+1

daeomnize工作。謝謝 – LifeStartsAtHelloWorld

+0

@sti謝謝!我一直在使用Hudson/Jenkins 3年,因爲過程殺手的行爲而面臨問題,並且花了幾天時間研究我自己的解決方法,並且從來不知道這個簡單的修補程序 – Slav

+1

這似乎幾乎不可能與Jenkins在Windows上運行有一個解決方案?我現在花了整整一天的時間,這只是表明完全無能爲力的Windows作爲真正的服務器 – wired00

0

有一個小竅門,你可以爲了你釋放一個詹金斯線程。

你可以做的是通過ssh連接到執行bash腳本,並將其發送到後臺,同時節省了進程的PID的地方,所以你可以進一步做檢查。

該命令的格式將是:

ssh -n _hostname_ "_commands_ & echo \$! > \"_path_to_pid_file_\"" & 

實施例與一個永無止境程序:

ssh -n myhost.domain.com "tail -f /var/log/my.log & echo \$! > \"$WORKSPACE/pid\"" & 

這個例子將產生尾過程監聽永遠爲在/ var新的變化/log/my.log文件並將其pid存儲在$ WORKSPACE/pid文件中。

當從詹金斯作業執行的SSH過程將立即退出,同時發送到後臺的命令將保留在執行在指定的主機。

我這樣做是爲了始終保持我同步與存儲庫中它的最新的代碼修改我的構建羣中運行的服務之一。 只是有一個工作,ssh進入目標機器,然後殺死進程,更新服務並重新啓動它。

這可能有點麻煩,但它的效果很好!