通过Jenkins REST API获取IP地址?

我的任务是对詹金斯的一些工作进行健康检查。这个想法是通过Jenkins rest

API获取作业的状态和关联的IP地址,因此我可以使用该信息与另一个Restful

API进行接口。我创建了一个Groovy脚本,该脚本成功解析了Jenkins作业并获取了它们的状态(无论它们是否正在运行),但是我还没有找到一种将这些作业与其IP地址关联的方法。有没有办法通过其余的API获取Jenkins中从站的IP地址,如果没有,是否有另一种获取上述IP地址的方法?

这是我到目前为止获得的代码,它就像一个超级魅力:

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7')

import groovyx.net.http.RESTClient

import groovy.json.JsonSlurper

def jenkinsClient = new RESTClient( 'myJenkinsURL' )

def monitorClient = new RESTClient( 'myOtherRestfulAPIURL' )

monitorClient.auth.basic "<username>", "<pass>"

jenkinsClient.setHeaders(Accept: 'application/json')

monitorClient.setHeaders(Accept: 'application/json')

def jobs = []

def jenkinsGetJobs = jenkinsClient.get( path: 'view/Events/api/json', contentType: 'text/plain' )

def jenkinsGetJobsSlurp = new JsonSlurper().parse(jenkinsGetJobs.data)

for (def j in jenkinsGetJobsSlurp.jobs ){

jobs.add(j.name)

}

//Can we get a list of IPS?

for(def job in jobs){

def jenkinsResp = jenkinsClient.get( path : 'view/Events/job/' + job + '/api/json', contentType: 'text/plain', query: [depth:"1"])

def jenkinsSlurp = new JsonSlurper().parse(jenkinsResp.data)

// println slurp

if (jenkinsSlurp.builds[0].building == true){

println "The " + job + " job is running."

//Make a call to other Restful API here

}

if (jenkinsSlurp.builds[0].building == false){

println "The " + job + " job is not running."

}

}

在标有//的注释部分中,我们可以获取IPS列表吗?我想以某种方式使用Jenkins Rest API来获取Jenkins奴隶的IP列表。

我可以通过其余的API来做到这一点吗?如果没有,还有其他方法吗?通过CLI,也许?在Jenkins

API文档中的任何地方都没有看到getIP()方法,但是我对此还很陌生,所以我可能只是缺少一些简单的东西。

回答:

您可以通过REST API在从站上执行groovy脚本,从而可以获得从站的ip地址。这是curl的示例,但是您可以对其进行调整以在代码中使用:

$ curl -u username:password -d "script=println InetAddress.localHost.hostAddress" jenkins_url/computer/node_name/scriptText

# 192.168.0.104

:要获取特定从站的IP地址,您必须知道它的名称。渐变节点名称查询很容易jenkins_url/computer/api/json

我将尝试抓取节点页面的HTML,以从群体从属描述中获取IP

由于奴隶可能通过JNLP连接,并且在该HTML页面上没有IP,因此这并不总是有效。

以上是 通过Jenkins REST API获取IP地址? 的全部内容, 来源链接: utcz.com/qa/424655.html

回到顶部