web-dev-qa-db-ja.com

ssh経由のjenkinscliビルドが10分後に切断されます

2つのjenkinsインスタンスがあります。 1番目のインスタンスのジョブが2番目のインスタンスのジョブを呼び出し、終了するまで待機して、いくつかのアクションを実行する必要があります(job @ 2ndによって生成されたアーティファクトを使用)

私はこの解決策を思いついた-SSH経由でJenkinsCLIコマンドを使用する

ssh -p 2222 second-jenkins build second-job -s -v <further options>

しかし、このセッションは10分後に次のメッセージで切断されます。

192.168.147.102からの切断を受信しました:2:ユーザーアイドルが600000ms後にタイムアウトしました。

I foundServerAliveIntervalという名前のsshクライアントオプション

ssh -o ServerAliveInterval=30 -p 2222 second-jenkins build second-job -s -v <...>

このオプションのドキュメントには

ServerAliveInterval

タイムアウト間隔を秒単位で設定します。その後サーバーからデータを受信しなかった場合、ssh(1)は暗号化されたチャネルを介してメッセージを送信して要求しますサーバーからの応答。デフォルトは0で、これらのメッセージがサーバーに送信されないことを示します。このオプションは、プロトコルバージョン2にのみ適用されます。

これは機能しますが、サーバーが10分ごとに少なくとも30秒静かな場合にのみ機能します。もちろん、30秒ではなく1秒を使用できますが、コンソール出力が継続するジョブ(Mavenビルドなど)では機能しません。

重いコンソール出力ジョブでも接続を維持するソリューションはありますか?

1
tworec

これをJenkinsスタートアップに追加して、SSHDタイムアウトを無効にします。

-Dorg.jenkinsci.main.modules.sshd.SSHD.idle-timeout=0

参照 https://medium.com/@alaoui.rda/jenkins-cli-ssh-timeout-38386c943c22

1

screenまたはtmuxを確認する必要があります。それらの1つをリモートホストにインストールし、そのセッション内でコマンドを起動します。 sshには-tオプションでttyを割り当てるため、screenに対して次のようにする必要があります。

$ ssh -t user@Host screen 'your_command'

1
cuongnv23