有没有办法判断Jenkins服务器是否已完成关闭?

时间:2013-07-22 15:54:40

标签: batch-file jenkins virtual-machine

我在虚拟机上运行Jenkins并从批处理文件中调用cli来执行安全关闭,如下所示:

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

关闭完毕后,我将关闭虚拟机并进行克隆。但是,我不希望在Jenkins安全关闭完成之前关闭虚拟机。有没有什么方法可以使用cli或批处理命令监视​​Jenkins以查看它是否正常关闭?

1 个答案:

答案 0 :(得分: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
    }
}
相关问题