来自jenkins api的节点标签

Ole*_*siy 3 jenkins

有什么办法可以从jenkins API中提取节点标签吗?该标准:

{base_url}/computer/{node}/api
Run Code Online (Sandbox Code Playgroud)

似乎没有任何标签信息.它在其他地方吗?

Ole*_*siy 6

显然,节点标签是节点配置的一部分,因此它们存在于中

{base_url}/computer/{node_str}/config.xml
Run Code Online (Sandbox Code Playgroud)

这是我通过python jenkinsapi(类似于作业配置)来访问它的黑客 node_str

import xml.etree.ElementTree as ET
from jenkinsapi.jenkins import Jenkins

j = Jenkins(...)
n = j.get_node(node_str)
response = n.jenkins.requester.get_and_confirm_status( "%(baseurl)s/config.xml" % n.__dict__)
_element_tree = ET.fromstring(response.text)
node_labels = _element_tree.find('label').text
Run Code Online (Sandbox Code Playgroud)


ara*_*ani 5

红宝石客户提供一种方式来获得通过调用XML配置文件.然后可以处理该文件以提取标签信息.

require "rubygems"
require "jenkins_api_client"

# Initialize the client by passing in the server information
# and credentials to communicate with the server
client = JenkinsApi::Client.new(
  :server_ip => "127.0.0.1",
  :username => "awesomeuser",
  :password => "awesomepassword"
)

# Obtain the XML of the desired node
xml = client.node.get_config("nodename")

# Extract label information
xml =~ /<label>(.*)<\/label)/

# As we can have multiple space-separated labels, we need to split them
labels = []
$1.split(" ").each { |label| labels << label }
Run Code Online (Sandbox Code Playgroud)