python-jenkins 库
import jenkins
import request
import json
# 初始化 Jenkins, jenkinsPassWord 使用用户token,而非密码,否则删除没有权限
server = jenkins.Jenkins(jenkinsUrl, jenkinsUser, jenkinsPassWord)
################# 节点 ################
# 获取节点
server.get_nodes()
# [{'name': 'master', 'offline': False}, {'name': '192.168.1.1', 'offline': True}]
# 获取节点信息, 返回json数据
response = server.jenkins_open(requests.Request('GET', Urlparse.unquote(f'{self.jenkinsUrl}/computer/{nodeName}/api/json?depth=0')))
nodeInfo = json.loads(response)
# 节点是否掉线
nodeInfo['offline']
# 可执行任务数
nodeInfo["numExecutors"]
# 获取执行中的任务
runJobList = server.get_running_builds()
# [{'name': 'deer02_loadcontrol', 'number': 10, 'url': 'http://192.168.234.251:8080/job/deer02_loadcontrol/10/', 'node': '192.168.234.203', 'executor': 1}]
################# 任务 job ################
# job是否存在
server.job_exists("TEST")
# 获取job xml配置值文件
xmlString = server.get_job_config("TEST")
# 创建job
server.create_job("TEST_1", xmlString)
# 构建job
server.build_job("jobName")
## 获取job 构建历史信息
jobInfor = server.get_job_info("jobName")
## 构建信息
obInfor["builds"]
number = obInfor["builds"][0]["number"] # 如果 builds 大于 0 构建数
## 任务URL
url = obInfor["url"]
# 获取执行中的任务
server.get_running_builds()
# 删除job
server.delete_job("TEST_1")
################# 视图 view ################
# 判断视图是否存在
server.view_exists("viewName")
# 获取所有视图
server.get_views()
# 获取视图的配置
xmlString = server.get_view_config("viewName")
# 创建视图 view
server.create_view("viewName", xmlString)
############ 将job配置到指定视图中 ##########
from xml.etree import ElementTree
viewXml = ElementTree.fromstring(server.get_view_config(viewName))
jobNames = viewXml.find("jobNames")
stringList = []
for string in jobNames.findall("string"):
if string.text is not None:
stringList.append(string.text)
jobNames.remove(string)
if jobName not in stringList:
stringList.append(jobName)
### 如果不排序,页面展示可能有问题
stringList.sort()
for jobName in stringList:
string = Element('string')
string.text = jobName
jobNames.append(string)
viewXml = ElementTree.tostring(viewXml).decode("utf-8")
server.reconfig_view(viewName, viewXml)
# 获取 视图中的 job
server._get_view_jobs("viemName")
# 删除视图
server.delete_view(viemName)
-
问题 1
python-jenkins ValueError: Timeout value connect was <object object at 0x00000296790E4610>, but it must be an int, float or None.
解决方法1:https 可能会出现上面的问题,可使用jenkinsapi
解决方法2: Jenkins(JENKINS_URL, JENKINS_USER, JENKINS_TOKEN, timeout=60*5) -
问题2
HTTPS 认证问题:requests.exceptions.SSLError:from jenkins import Jenkins as JenkinsLib class Jenkins(JenkinsLib): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._session.verify = False