0

仮想マシンで Jenkins を実行し、バッチ ファイルから cli を呼び出して、次のように安全なシャットダウンを実行しています。

java -jar $JenkinsCLILocation -s http://$JenkinsURL safe-shutdown

シャットダウンが完了したら、仮想マシンをオフにしてクローンを作成します。ただし、Jenkins の安全なシャットダウンが完了する前に仮想マシンの電源を切りたくありません。cli またはバッチ コマンドを使用して Jenkins を監視し、適切にシャットダウンされているかどうかを確認する方法はありますか?

4

1 に答える 1

0

これは最もゲットーなハックです。基本的には、Jenkins CLI jar ファイルを実行する java コマンドのエラー出力を見て、エラー出力に「接続に失敗しました」と表示されている場合は、Jenkins がシャットダウンされていると想定しています。

誰かがもっと優雅な解決策を持っているかどうかを知りたいです。原因は、これはひどいことです。

while(!$JenkinsIsDown)
{
    Write-Host "Getting the session ID from Jenkins to check if it's down..."

    #This is a terrible hack so we can process the output of the command
    $JenkinsProcess = New-Object System.Diagnostics.ProcessStartInfo
    $JenkinsProcess.FileName = "java"
    $JenkinsProcess.RedirectStandardError = $true
    $JenkinsProcess.RedirectStandardOutput = $true
    $JenkinsProcess.UseShellExecute = $false
    $JenkinsProcess.Arguments = "-jar " + $JenkinsCLILocation + " -s http://" + $JenkinsURL + " session-id" 
    $JenkinsProcess.WaitForExit()
    $p = New-Object System.Diagnostics.Process
    $p.StartInfo = $JenkinsProcess
    $p.Start() | Out-Null
    $p.WaitForExit()
    $stdout = $p.StandardOutput.ReadToEnd()
    $stderr = $p.StandardError.ReadToEnd()        

    if($stderr.Contains("Failed to connect"))
    {
        Write-Host "The Jenkins is down."
        $JenkinsIsDown = $true
    }
}
于 2013-07-25T21:10:34.697 に答える