2015-05-21 83 views
1

我是設置jenkins的新手,所以請耐心等待。我試圖遠程執行一個shell腳本,該腳本在Jenkins完成構建並將文件部署到此服務器後停止並啓動我的獨立Jetty部署。使用Jenkins發送文件或通過SSH執行命令時腳本不會退出

http://imgur.com/PXGHqtl (郵政的截圖上構建詹金斯設置堂妹我不是10代表尚未...)

所以我遇到的問題是,一旦構建到達這個階段和發送文件通過SSH插件開始執行jetty.sh啓動腳本,由於sh腳本看起來不會返回任何完成確認(ERROR:發佈時發生異常,異常消息[Exec超時或在120,003 ms後中斷] )。這將導致構建失敗,儘管碼頭服務正常啓動。

我已經嘗試通過啓用「Exec in pty」來實現高級設置,但這會導致啓動後的jetty服務在此步驟完成後立即關閉。

有沒有人有什麼我可以嘗試的建議?我的方法是正確的還是完全錯誤的?

+0

如果你只需要在遠程機器通過SSH執行命令,就可以完成建設,並與像'SSH命令部署後添加另一個構建步驟[email protected] <你的命令>'。您需要確保'user'能夠SSH密碼到該機器,所以該用戶的ssh密鑰應該被複制到Jetty正在運行的遠程機器上。 – davidrv87

+0

Hiya大衛!感謝您的意見!我檢查了密碼和ssh權限,它們都是正確的。我發現了一個解決方案,但我的問題仍然存在,因此我會更新答案。 – blaytenshi

+0

沒問題!那麼問題是什麼? – davidrv87

回答

3

爲什麼我收到超時錯誤
有一個內置的超時在發送文件通過SSH插件的高級部分。默認情況下,它在SSH連接上處於非活動狀態時設置爲120秒超時。在這種情況下,我正在使用「Exec in Pty」選項運行「通過SSH發送文件」任務已禁用。選中此選項後,插件將通過虛擬SSH終端會話連接到部署服務器,之後它不會自行退出會話,因此它只是等待超時。

爲什麼碼頭服務啓動,而是立即
關閉隨着「EXEC在控股」選項啓用,適當的SSH終端會話用於連接到我的部署服務器。這將任何輸出和過程與實際的終端會話聯繫起來。當通過SSH發送文件插件完成碼頭啓動腳本執行時,它會自行退出,但這樣做會殺死腳本啓動的所有進程。在地方我平常的「nohup的./jetty.sh開始>的/ dev/null的2> 」:

解決方案
很多周圍挖後,我發現了一個解決方案使用命令來啓動我的腳本。 /jetty.sh啓動命令。但這有一個缺點。輸出不會重定向到終端會話,所以我不知道我的碼頭服務是否正常啓動。但目前我對該解決方案感到滿意,因爲它只能部署到我的開發環境中。

來源
Terminating SSH session executed by bash script
Jenkins Text-finder unable to success my Build
Jetty server stops running after closing terminal window