jenkins api——python-jenkins 库

这篇博客介绍了如何使用python-jenkins库来管理Jenkins服务器,包括获取和操作节点、任务、视图等。遇到的问题有:ValueError关于超时设置和HTTPS认证,解决方案分别是对timeout参数赋值为整数和设置session的verify属性为False。
摘要由CSDN通过智能技术生成

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	
    
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值