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爬取网站数据保存使用的方法
Nov 20 Python
python实现ip查询示例
Mar 26 Python
Python实现文件按照日期命名的方法
Jul 09 Python
Python简单遍历字典及删除元素的方法
Sep 18 Python
使用Python的Scrapy框架十分钟爬取美女图
Dec 26 Python
python:socket传输大文件示例
Jan 18 Python
带你了解python装饰器
Jun 15 Python
关于python字符串方法分类详解
Aug 20 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
Jan 20 Python
pytorch实现Tensor变量之间的转换
Feb 17 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 Python
python爬取网页版QQ空间,生成各类图表
Jun 02 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
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
2014/08/20 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
$()JS小技巧
2007/07/21 Javascript
ExtJS 2.0实用简明教程 之ExtJS版的Hello
2009/04/29 Javascript
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
2017/12/15 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
jQuery实现日历效果
2020/09/11 jQuery
[58:21]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第二场
2018/04/04 DOTA
python中base64加密解密方法实例分析
2015/05/16 Python
一篇文章入门Python生态系统(Python新手入门指导)
2015/12/11 Python
Python序列化基础知识(json/pickle)
2017/10/19 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
matplotlib之多边形选区(PolygonSelector)的使用
2021/02/24 Python
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
L’urv官网:精品女性运动服品牌
2019/07/07 全球购物
.NET remoting的两种通道是什么
2016/05/31 面试题
小学生倡议书范文
2014/05/13 职场文书
考察现实表现材料
2014/05/19 职场文书
教育见习报告范文
2014/11/03 职场文书
高中同学会致辞
2015/08/01 职场文书
2016年中秋节慰问信
2015/12/01 职场文书