5

jenkins API からノード ラベルを抽出する方法はありますか? 標準: _

{base_url}/computer/{node}/api

ラベル情報がないようです。他の場所にありますか?

4

5 に答える 5

7

どうやら、ノードラベルはノード構成の一部であるため、それらは

{base_url}/computer/{node_str}/config.xml

これは、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
于 2013-01-25T23:32:30.310 に答える
5

ruby クライアントは、呼び出しによって構成 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 }
于 2013-03-19T06:40:13.147 に答える
3

BeautifulSoup と urllib2 を使用してもかまわない場合は、これを実行して、ノード名をキーとするラベル リストの辞書を作成できます。確かに壊れやすくハックですが、Jenkins バージョンで動作します。1.512

JENKINS_URL = "http://jenkins.mycompany.com"

from jenkinsapi import jenkins
from BeautifulSoup import BeautifulSoup
from urllib2 import urlopen

node_labels = dict()
jenkins_obj = jenkins.Jenkins(JENKINS_URL)
node_names = jenkins_obj.get_node_dict().keys()
for node_name in node_names:
    if node_name is not "master":
        req = urlopen('{}/computer/{}/'.format(JENKINS_URL,node_name))
        soup = BeautifulSoup(req.read())
        node_labels[node_name] = [tag.text for tag in soup.findAll("a", {"class":"tag0 model-link"})]
于 2013-05-06T22:56:53.540 に答える