通过 Jenkins REST API 获取 IP 地址?

2024-01-26

我的任务是对 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."
        }
}

在标记为 //can we get a list of 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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Jenkins REST API 获取 IP 地址? 的相关文章

随机推荐

  • TensorFlow 形状 (?,) 是什么意思?

    我得到的 TensorFlow 张量的形状为 这个答案 https stackoverflow com a 40953146 5353461说 意味着维度在图中并不固定 并且在运行调用之间可能会有所不同 什么是 意思是与尾随逗号连用吗 文档
  • 在 MATLAB 中预分配内存 à la std::vector::reserve(n)

    So reserve当您大致了解尺寸要求时 此功能非常有用 有谁知道在 MATLAB 中预分配数组的类似方法吗 我对像下面这样的黑客 但有效 方法并不真正感兴趣 x zeros 1000 1 for i 1 10000 if i gt nu
  • R 将文本文件导入为数据框列表

    我有一个很长的txt文件 组织如下 RANGE P1 H1 P3 H4 P10 H72 P14 H76 RANGE P1 H1 P10 H8 P11 H8 我想在 R 中阅读它 创建一个数据帧列表 其中 RANGE 和 界定每一项的内容 因
  • 使用元标记的 IE 10 兼容模式

    基本上我有这个网站 在所有版本的 IE 的兼容模式 IE7 下都运行得很好 我为此在 IIS 中使用了元标记 现在的问题是 IE10 其中文档模式已更改为 IE 标准 但浏览器模式并未更改为兼容 您能指导我找到解决方案吗 元标记会为您更改文
  • 多播委托 - 多个类从 iOS 中的 UI 控件接收通知

    据我了解 UITextField 等 UI 控件通过其委托通知客户端交互 事件 该委托被定义为支持所需协议的类 我经常发现自己想要在多个类中接收 UI 事件的通知 因此希望支持多播 例如 为一个 UI 控件指定多个委托 我非常确定没有任何
  • 创建基于编译器的“字典”的非静态版本,其中键是类型

    有一个非常简单的技巧可以创建一个类似字典的结构 其中键是类型 该结构就像一个Dictionary
  • 柯里化是如何工作的?

    总的来说 我对 Haskell 和 FP 很陌生 我读过许多描述柯里化是什么的文章 但我还没有找到它实际工作原理的解释 这是一个函数 a gt a gt a 如果我做 4 7 该函数取4并返回一个函数 该函数接受7并返回11 但会发生什么4
  • 设置集成测试环境

    我想在我的集成测试中使用设置环境WebApplicationFactory 默认情况下 env 设置为Development 我的网络应用程序工厂的代码如下所示 public class CustomWebApplicationFactor
  • asio:如何将对象从一个io上下文传递到另一个io上下文

    我试图更好地理解 async asio 的工作原理 我有以下代码 我在套接字上调用 async read 来读取接下来的 10 个字节的数据 struct SocketReader void do read body asio async
  • 如何将总计行添加到Excel Power查询?

    我通过使用 excel power query 中的 group 函数生成了如下所示的表格 score 1 score 2 score 3 A 6 25 50 B 8 30 20 C 15 15 30 D 20 0 10 我想添加一个总计行
  • 批处理文件将多个目录中具有特定扩展名的文件复制到一个目录中

    我是新手 所以请耐心等待 我正在尝试复制所有 doc我使用批处理文件将一个主目录的多个子目录中的文件分散到另一个目录中 我已经设法得到了filelist txt我想使用以下方法复制这些目录中的所有文件 有数百个 C Main directo
  • 使用 Ruby/Rails 将链接从字符串转换为可点击链接

    使用 Ruby Rails 有谁知道如何获取可能包含一些 HTML 元素的大字符串并将它们放入链接中 这是一个例子 Check out my video on you tube http youtu be OkCcD6cOKgs 我正在寻找
  • 如何显示 MySQL 数据库中表的架构?

    来自MySQL https www mysql com 控制台 什么命令显示任何给定表的架构 对于格式化输出 describe db name table name 对于可用于创建表的 SQL 语句 show create table db
  • 如何通过拦截器向AngularJS中的http请求添加新的标头?

    var module angular module timestamp marker example module factory timestampMarker function var timestampMarker request f
  • Web 服务与 DLL;优点和缺点?

    我正在为我们的网站实施一项网络服务 该服务通过互联网请求并接收来自第三方的数据 我还被要求创建一个 DLL 为内部 Windows 应用程序复制 Web 服务的功能 我的问题是 不创建 DLL 并使用 WEB 服务用于内部和 Web 应用程
  • 在 post_save 信号中访问用户的请求

    我在我的项目中完成了以下 post save 信号 from django db models signals import post save from django contrib auth models import User COR
  • 如何使 UILabel 中的文本缩小字体大小

    如果 UILabel 包含太多文本 如何设置标签以缩小字体大小 这是我设置 UILabel 的方法 descriptionLabel UILabel alloc initWithFrame CGRectMake 200 30 130 150
  • 接口变量是否具有值类型或引用类型语义?

    接口变量是否具有值类型或引用类型语义 接口由类型实现 这些类型要么是值类型 要么是引用类型 显然 两者int and string实施IComparable and int是一个值类型 并且string是一个引用类型 但是这个呢 IComp
  • 如何使用 javascript 更新 parse.com 中的当前对象?

    我想用 javascript 更新 parse com 中已有的对象 我所做的是我首先通过查询退休了该对象 但我不知道如何更新它 这是我使用的代码 有什么问题吗 var GameScore Parse Object extend Drive
  • 通过 Jenkins REST API 获取 IP 地址?

    我的任务是对 Jenkins 的一些工作进行一些健康检查 这个想法是通过 Jenkins Rest API 获取作业的状态和关联的 IP 地址 这样我就可以使用该信息与另一个 Restful API 进行交互 我创建了一个 groovy 脚