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ビルドなど)では機能しません。
重いコンソール出力ジョブでも接続を維持するソリューションはありますか?
これをJenkinsスタートアップに追加して、SSHDタイムアウトを無効にします。
-Dorg.jenkinsci.main.modules.sshd.SSHD.idle-timeout=0
参照 https://medium.com/@alaoui.rda/jenkins-cli-ssh-timeout-38386c943c22
screen
またはtmux
を確認する必要があります。それらの1つをリモートホストにインストールし、そのセッション内でコマンドを起動します。 ssh
には-t
オプションでtty
を割り当てるため、screen
に対して次のようにする必要があります。
$ ssh -t user@Host screen 'your_command'