我有一个詹金斯大师和一些静态的奴隶(!)连接到它。也就是说,每个节点都没有执行者。我试图通过监视从服务器处理某个工作以重新启动从服务器的时间来确定挂起的从服务器。我仔细阅读了Groovy在Jenkins的文档: http://javadoc.jenkins-ci.org/ 但是找不到任何方法来识别繁忙的从站。我发现可以完成的唯一方法只有在使用了执行者的情况下才有意义(以类似的方式:https://wiki.jenkins-ci.org/display/JENKINS/Find+builds+currently+running+that+has+been+executing+for+more+than+N+seconds)。如何识别给定詹金斯大师的挂起奴隶
任何想法我该怎么做?
编辑: 这是使用系统Groovy脚本我的解决方案:
import hudson.model.*
import hudson.node_monitors.*
import hudson.slaves.*
import java.util.concurrent.*
import jenkins.model.Jenkins
import hudson.util.RemotingDiagnostics
jenkins = Hudson.instance
import javax.mail.internet.*;
import javax.mail.*
import javax.activation.*
import hudson.*;
import hudson.tasks.*;
import hudson.model.AbstractBuild
import hudson.Launcher
import hudson.model.BuildListener
import hudson.FilePath
import groovy.io.FileType
import jenkins.util.VirtualFile;
int MAX_ALLOWED_DURATION_IN_SECONDS = 60 * 30 // 30 minutes
for (computer in jenkins.model.Jenkins.instance.computers)
{
for(e in computer.executors)
{
if(e.isBusy())
{
int durationInSeconds = (System.currentTimeMillis() - e.executable.getStartTimeInMillis())/1000.0
if(durationInSeconds > MAX_ALLOWED_DURATION_IN_SECONDS)
{
print "restarting slave:"
println computer.getName()
println "\n\n\n"
def channel = computer.getChannel()
println RemotingDiagnostics.executeGroovy(""""cmd /c shutdown -r".execute().text""",channel)
break
}
}
}
}
println "Done"
return 0
你的问题的标题可能是“如何识别给予詹金斯大师挂奴隶”.. – Jayan
编辑...任何想法? – MROB