Python-jenkins 获取job构建信息方式


Posted in Python onMay 12, 2020

官方文档:

需求:当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-jenkins 获取job构建信息方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python EOL while scanning string literal问题解决方法
Sep 18 Python
Django自定义分页效果
Jun 27 Python
Python根据已知邻接矩阵绘制无向图操作示例
Jun 23 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
python ChainMap 合并字典的实现步骤
Jun 11 Python
python循环嵌套的多种使用方法解析
Nov 29 Python
pytorch 自定义卷积核进行卷积操作方式
Dec 30 Python
Python3实现mysql连接和数据框的形成(实例代码)
Jan 17 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 Python
Django 用户登陆访问限制实例 @login_required
May 13 Python
Python requests及aiohttp速度对比代码实例
Jul 16 Python
python进行参数传递的方法
May 12 #Python
python输出数学符号实例
May 11 #Python
使用matlab 判断两个矩阵是否相等的实例
May 11 #Python
Django models文件模型变更错误解决
May 11 #Python
对Matlab中共轭、转置和共轭装置的区别说明
May 11 #Python
Django静态资源部署404问题解决方案
May 11 #Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 #Python
You might like
基于PHP+MySQL的聊天室设计
2006/10/09 PHP
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
JavaScript实现的数字与字符串转换功能示例
2017/08/23 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
js实现简单的倒计时
2021/01/28 Javascript
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
python根据距离和时长计算配速示例
2014/02/16 Python
Python编程中的异常处理教程
2015/08/21 Python
详解Python requests 超时和重试的方法
2018/12/18 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
Python实现中值滤波去噪方式
2019/12/18 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
Python解析微信dat文件的方法
2020/11/30 Python
英国现代市场:ARKET
2019/04/10 全球购物
应届毕业生就业自荐信
2013/10/26 职场文书
应届护士求职信范文
2014/01/26 职场文书
社区志愿者活动方案
2014/08/18 职场文书
医院合作协议书
2014/08/19 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
大班上学期个人总结
2015/02/13 职场文书
工作能力自我评价2015
2015/03/05 职场文书
Python基础之hashlib模块详解
2021/05/06 Python