gpt4 book ai didi

json - 通过 Jenkins REST API 获取 IP 地址?

转载 作者:行者123 更新时间:2023-12-03 02:42:00 26 4
gpt4 key购买 nike

我的任务是对一些 Jenkins 作业进行一些健康检查。这个想法是通过 Jenkins Rest API 获取作业的状态和关联的 IP 地址,这样我就可以使用该信息与另一个 Restful API 进行交互。我创建了一个 groovy 脚本,可以成功解析 Jenkins 作业并获取它们的状态(无论它们是否正在运行),但我还没有找到一种方法将这些作业与其 IP 地址关联起来。有没有办法通过rest 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在你的slave上执行groovy脚本,从而获得slave的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

可以轻松分级节点名称

I am going to try scraping the HTML of the node page to grab the IP from the swarm slave description

这并不总是有效,因为从站可能通过 JNLP 连接,并且您在该 HTML 页面上不会有 IP。

关于json - 通过 Jenkins REST API 获取 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31687139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com