[Python-jenkins]获取job构建信息
2023-09-27 14:25:18 时间
需求:当1个job启动构建后,获取它的构建状态.(成功,失败,驳回,构建中,正在排队)
关键函数:
获取job是否在排队的结果
获取正在排队构建的job队列 即pending状态中的所有job,如果没有 pending状态的job即返回1个空列表
queue_info = server.get_queue_info()
获取job构建结果
server.get_build_info(name, build_number)[ 'result'] # 构建结束 SUCCESS|FAILURE<class 'str'> ABORTED <class 'str'> 构建中None None <class 'NoneType'>
代码示例:
def get_build_state(server, name, build_number):
'''
:param name: job_name
:param build_number: 最后1次构建序号
:param:jenkins_server
:return: 最后1次构建状态 pending,success,false,building
'''
build_state = None
# 获取正在排队构建的job队列 即pending状态中的所有job,如果没有 pending状态的job即返回1个空列表
queue_info = server.get_queue_info()
if queue_info:
for queue_job_info in queue_info:
if queue_job_info['task']['name'] == name:
# msg = 'pending期,排队构建中'
build_state = 'pending'
else:
build_state = server.get_build_info(name, build_number)[
'result'] # 构建结束 SUCCESS|FAILURE<class 'str'> ABORTED <class 'str'> 构建中None None <class 'NoneType'>
return build_state
通过接口将该功能封装起来
@build_bp.route('/gotest/api/getBuildState', methods=['POST'])
def get_job_build_state():
'''
获取job构建状态
return:build_state Success,Faild,Pending,Building
'''
data = request.get_json()
job_name = data['job_name']
server = get_jenkins_server()
# 获取job的最后次构建号
lastbuildNumber = server.get_job_info(job_name)['lastBuild']['number']
#获取构建状态
build_state = get_build_state(server, job_name, lastbuildNumber)
if build_state is None:
build_msg = 'Building'
elif build_state == 'SUCCESS':
build_msg = 'SUCCESS'
elif build_state == 'FAILURE':
build_msg = 'FAILURE'
elif build_state == 'ABORTED':
build_msg = 'ABORTED'
elif build_state =='pending':
build_msg = 'pending'
response = {}
datas={}
response['code'] = 200
response['msg'] = 'OK'
datas['build_state'] = build_msg
datas['buildNumber'] = lastbuildNumber
response['datas'] = datas
return response
测试接口:
import requests
url='http://127.0.0.1:5000/gotest/api/getBuildState'
data={'job_name':'android_official'}
r = requests.post(url,json=data)
print(r.text)
响应:
{"code":200,"datas":{"buildNumber":1010,"build_state":"SUCCESS"},"msg":"OK"}
相关文章
- Python读写JSON格式数据
- python-day4 列表(相当于java的list集合)的操作
- 基于Python的药店|药房管理系统的设计和实现
- 你真的了解自动化测试框架么?Python+Requests+Pytest+Jenkins
- 【Python】GUI 练习1--利率计算器
- jenkins 使用的python 不是指定的python 的解决方法
- jenkins 执行python脚本 断言失败就可以构建失败
- python 用到的函数记录
- python 练习 simple_server 判断路径及返回函数
- python xml与字典的相互转换
- 【Python+selenium】自动化生成测试报告
- PyQt(Python+Qt)学习随笔:使用实例方法赋值方式捕获事件
- 关于Python链式赋值的赋值顺序问题
- 第8.1节 Python类的构造方法__init__深入剖析:语法释义
- Jenkins +git +python 进行持续集成进行接口测试(接口测试jenkins持续集成篇)
- JENKINS的远程API调用,然后用PYTHON解析出最新的版本及稳定成功的版本
- python 实现图片融合