詹金斯奴隶的位置

时间:2014-11-18 00:37:47

标签: windows jenkins

我们在Windows环境中使用jenkins。在大约20台机器中 - 我说每天至少有3台奴隶服务因为不明原因而停下来。我有一个监控系统,可以观看服务和重新启动,并做许多其他有用的事情 - 但到目前为止,我还没有弄清楚如何知道哪些机器需要关注哪些服务 - 基本上我使用的是jenkins休息api获取奴隶列表 - 但不知何故我需要将它们转换为机器名称......而且关键 - 我需要在没有连接的情况下这样做 - 所以运行像print ip这样的东西在机器上没用。

我知道jenkins的设计是为了让奴隶联系服务器,所以奴隶可以在任何地方跑,但在我们的情况下,我们永远不会'#34;移动"奴隶,我们只是创造另一个。我只是想知道是否有任何可访问的日志或历史记录或类似的东西"我们最后一次从这个奴隶那里听到它来自机器X作为服务名称Y"

假设詹金斯目前无法联系奴隶,是否有可能以任何方式获取此信息?

1 个答案:

答案 0 :(得分:2)

这取决于您在从属配置中使用的连接方法,但即使从属设备脱机,Jenkins也应该保留从属配置。

此URL将为您提供所有从属名称及其在线状态的列表:

JENKINS_BASE_URL/computer/api/json?tree=computer[displayName,offline]

但REST API不会显示主机名。这里有一些Groovy代码可以解决这个问题:

hudson = Hudson.instance
for (slave in hudson.slaves) {
  println "Slave name: ${slave.name} hostname: ${slave.launcher.host} online: ${slave.computer.online}"
}

这要求您安装Jenkins Groovy plugin。您可以通过各种方式执行脚本:

  1. 通过脚本控制台(JENKINS_BASE_URL / script)
  2. 使用Jenkins CLI" groovy"命令(参见JENKINS_BASE_URL / cli)
  3. 通过Jenkins作业中的System Groovy Script构建步骤
  4. 对于选项2和3,添加行

    import hudson.model.*
    import hudson.slaves.*
    

    位于脚本的顶部。