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读取注册表中值的方法
Apr 08 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
May 27 Python
pandas修改DataFrame列名的方法
Apr 08 Python
python实现飞机大战微信小游戏
Mar 21 Python
学生信息管理系统python版
Oct 17 Python
Pyinstaller 打包exe教程及问题解决
Aug 16 Python
python区分不同数据类型的方法
Oct 14 Python
Python文件读写w+和r+区别解析
Mar 26 Python
Flask模板引擎Jinja2使用实例
Apr 23 Python
如何通过Python3和ssl实现加密通信功能
May 09 Python
Python叠加矩形框图层2种方法及效果
Jun 18 Python
Python面向对象实现方法总结
Aug 12 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
smarty简单分页的实现方法
2014/10/27 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
php中实现用数组妩媚地生成要执行的sql语句
2015/07/10 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
js树形控件脚本代码
2008/07/24 Javascript
javascript Base类 包含基本的方法
2009/07/22 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
JS逆序遍历实现代码
2014/12/02 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
2015/02/28 Javascript
javascript实现密码验证
2015/11/10 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
2018/08/22 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
python文件操作之目录遍历实例分析
2015/05/20 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
浅析python继承与多重继承
2018/09/13 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
python使用Thread的setDaemon启动后台线程教程
2020/04/25 Python
css3实现动画的三种方式
2020/08/24 HTML / CSS
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
课外小组活动总结
2014/08/27 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
典型事迹材料范文
2014/12/29 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书