【问题标题】:How to get ip of a Jenkins' node using Jenkins API in groovy如何在 groovy 中使用 Jenkins API 获取 Jenkins 节点的 ip
【发布时间】:2019-12-18 12:15:13
【问题描述】:

我有以下 Groovy 脚本,由 Jenkins 管道作业调用:

import jenkins.model.Jenkins

def foo(){
    Jenkins.instance.getNode('bla').getComputer.disconnect()
}

检查getComputer() API,我无法找到同时获取节点 IP 的方法。是否可以在 jenkinsfile / groovy 脚本中实现?

【问题讨论】:

  • 这篇文章完全回答了您的问题:stackoverflow.com/questions/14930329/… 大多数其他答案将打印主服务器的 IP,或者仅适用于 linux 代理
  • @Mzzl 我不能使用这个解决方案。使用 ListPossibleNames 会引发“Script1.groovy:719:无法解析类 ListPossibleNames”——某种我无法解决的导入错误
  • 如果您删除导入并使用完整的new hudson.model.Computer.ListPossibleNames() 怎么办?
  • getChannel() 返回 null 所以这个崩溃......不确定应该是什么值而不是“我的奴隶”

标签: jenkins groovy


【解决方案1】:

这最终对我有用。诀窍是从 master 运行它(因此所需的节点不会被识别为“本地主机”

 def find_ip(node_name){
       for (slave in Jenkins.instance.slaves) {
           host = slave.computer.hostName
           addr = InetAddress.getAllByName(host)
           if (! slave.name.trim().equals(node_name.trim())) { continue }
           return host
       }
 }

【讨论】:

    猜你喜欢
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多