我在虚拟机上运行 Jenkins 并从批处理文件中调用 cli 来进行安全关机,如下所示:
java -jar $JenkinsCLILocation -s http://$JenkinsURL safe-shutdown
完成关闭后,我将关闭虚拟机并对其进行克隆。但是,我不想在 Jenkins 安全关闭完成之前关闭虚拟机。有什么方法可以使用 cli 或批处理命令监视 Jenkins 以查看它是否已正确关闭?
我在虚拟机上运行 Jenkins 并从批处理文件中调用 cli 来进行安全关机,如下所示:
java -jar $JenkinsCLILocation -s http://$JenkinsURL safe-shutdown
完成关闭后,我将关闭虚拟机并对其进行克隆。但是,我不想在 Jenkins 安全关闭完成之前关闭虚拟机。有什么方法可以使用 cli 或批处理命令监视 Jenkins 以查看它是否已正确关闭?
这是最贫民窟黑客。我基本上在做的是查看执行 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
}
}