我有一個詹金斯大師和一些靜態的奴隸(!)連接到它。也就是說,每個節點都沒有執行者。我試圖通過監視從服務器處理某個工作以重新啓動從服務器的時間來確定掛起的從服務器。我仔細閱讀了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