Ssh
jenkins cli build via ssh 在 10 分鐘後斷開連接
我有兩個詹金斯實例。我希望第一個實例的作業在第二個實例呼叫作業,等到它結束並執行一些操作(使用作業@ 2nd 產生的工件)
我想出了這個解決方案 - 通過 SSH 使用 Jenkins CLI 命令
ssh -p 2222 second-jenkins build second-job -s -v <further options>
但是此會話在 10 分鐘後斷開並顯示消息:
收到與 192.168.147.102 的斷開連接:2:使用者空閒已在 600000 毫秒後超時。
我發現ssh 客戶端選項名為
ServerAliveInterval
ssh -o ServerAliveInterval=30 -p 2222 second-jenkins build second-job -s -v <...>
此選項的文件說
ServerAliveInterval
以秒為單位設置超時間隔,如果沒有從伺服器接收到數據,ssh(1) 將通過加密通道發送消息以請求伺服器響應。預設為0,表示這些消息不會發送到伺服器。此選項僅適用於協議版本 2。
這有效,但僅當伺服器在每 10 分鐘內至少安靜 30 秒時才有效。當然,我可以使用 1 秒而不是 30 秒,但它不適用於具有連續控制台輸出的作業(例如 maven 建構)。
即使對於繁重的控制台輸出作業,是否有保持連接活躍的解決方案?
將此添加到 Jenkins 啟動以禁用 SSHD 超時:
-Dorg.jenkinsci.main.modules.sshd.SSHD.idle-timeout=0
另見https://medium.com/@aloui.rda/jenkins-cli-ssh-timeout-38386c943c22
你應該看看
screen
ortmux
。在遠端主機上安裝其中一個並在該會話中啟動您的命令。ssh
有-t
分配的選項tty
,所以你應該做這樣的事情screen
:
$ ssh -t user@host screen 'your_command'