【问题标题】:Jenkins slave locations詹金斯奴隶位置
【发布时间】:2014-11-19 03:11:46
【问题描述】:

我们在 windows 环境中使用 jenkins。在大约 20 台机器中 - 我会说每天至少有 3 台从服务因未知原因停止。我有一个监视系统,可以监视服务并重新启动,并做许多其他有用的事情-但到目前为止,我还没有弄清楚如何知道要关心哪些机器上的哪些服务-基本上我正在使用 jenkins rest api获取从站列表 - 但不知何故,我需要将它们翻译成机器名称......而且至关重要的是 - 我需要在它们未连接时这样做 - 所以在机器上运行类似 print ip 的任何东西没用。

我知道 jenkins 的设计是为了让从站与服务器联系,所以从站可以在任何地方运行,但在我们的例子中,我们永远不会“移动”一个从站,我们只会创建另一个。我只是想知道是否有任何可访问的日志或历史记录或类似“我们最后一次从这个奴隶那里听到它来自机器 X 作为服务名称 Y”的东西

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

【问题讨论】:

    标签: windows jenkins


    【解决方案1】:

    这取决于您在从属配置中使用的连接方法,但即使从属设备离线,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 脚本构建步骤

    对于选项 2 和 3,添加行

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

    在脚本的顶部。

    【讨论】:

    • 这很酷 - 我不知道你能做到 - 这很有趣 - 谢谢 - 它实际上很有用。不幸的是 - 至于我的问题,它没有帮助,因为它给了我显示名称 - 我想要 服务器名称 - 不幸的是,配置 jenkins 的人用 CLIENT_DEPLOYMENT_MACHINE 之类的名称配置了它 - 这没有给我一些远程的东西
    • 啊,主机名没有出现在 Jenkins REST API 中。您需要使用一些 Groovy 代码;我将编辑我的答案。
    猜你喜欢
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 2018-08-02
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多