簡體   English   中英

使用Jenkins發送文件或通過SSH執行命令時,腳本未退出

[英]Script not exiting when using Jenkins Send Files or Execute Commands Over SSH

我剛開始設置詹金斯(Jenkins),所以請多多包涵。 我正在嘗試遠程執行一個Shell腳本,該腳本將在Jenkins完成構建並將文件部署到此服務器之后停止並啟動我的獨立Jetty部署。

http://imgur.com/PXGHqtl(Jenkins coz上的Post Build設置的屏幕截圖,我還不是10位代表...)

所以我遇到的問題是,一旦構建達到此階段並且通過SSH插件發送文件開始執行jetty.sh啟動腳本,我會收到超時錯誤,因為sh腳本似乎不返回任何完成確認(錯誤:發布時發生異常,異常消息[Exec超時或在120,003 ms之后被中斷]。 即使碼頭服務正確啟動,這也會導致構建失敗。

我已經嘗試通過啟用“ Ext in pty”來嘗試“高級”設置,但這會導致啟動的碼頭服務在此步驟完成后立即再次關閉。

有人對我可以嘗試的方法有任何建議嗎? 我的方法正確還是完全錯誤?

為什么我收到超時錯誤
“通過SSH發送文件”插件的高級部分有一個內置超時。 默認情況下,它設置為在SSH連接不活動時超時120秒。 在這種情況下,我正在運行“通過SSH發送文件”發布任務,並且禁用了“執行Pty”選項。 選中此選項時,插件將通過虛擬SSH終端會話連接到部署服務器,此后,它不會自行退出會話,因此僅等待超時。

為什么碼頭服務可以啟動但立即關閉
啟用 “在Pty中執行”選項后,將使用正確的SSH終端會話連接到我的部署服務器。 這會將所有輸出和過程與實際的終端會話聯系在一起。 當通過SSH發送文件插件完成碼頭啟動腳本的執行時,它會自行退出,但這樣做會殺死腳本啟動的所有進程。


深入研究之后,我找到了一種使用以下命令啟動腳本的解決方案:'nohup ./jetty.sh start> / dev / null 2>&1&'代替我通常的./jetty.sh start命令。 不過,這有一個缺點。 輸出未重定向到終端會話,因此我不知道碼頭服務是否正常啟動。 但是到目前為止,到目前為止,我對該解決方案感到滿意,因為它只能部署到我的開發環境中。

資料來源
終止bash腳本執行的SSH會話
Jenkins Text-finder無法成功完成我的構建
關閉終端窗口后,Jetty服務器停止運行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM