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 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
Python中列表、字典、元组、集合数据结构整理
Nov 20 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
Dec 08 Python
离线安装Pyecharts的步骤以及依赖包流程
Apr 23 Python
Odoo中如何生成唯一不重复的序列号详解
Feb 10 Python
python opencv 直方图反向投影的方法
Feb 24 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
May 30 Python
python实现统计文本中单词出现的频率详解
May 20 Python
Django继承自带user表并重写的例子
Nov 18 Python
pytorch中torch.max和Tensor.view函数用法详解
Jan 03 Python
Python 判断时间是否在时间区间内的实例
May 16 Python
浅谈keras中的目标函数和优化函数MSE用法
Jun 10 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 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
2014/07/02 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
JavaScript中数组的排序、乱序和搜索实现代码
2011/11/30 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
AngularJS监听ng-repeat渲染完成的方法
2018/03/20 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
python中的lambda表达式用法详解
2016/06/22 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
pandas求两个表格不相交的集合方法
2018/12/08 Python
python flask安装和命令详解
2019/04/02 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
Python 装饰器原理、定义与用法详解
2019/12/07 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
java关于string最常出现的面试题整理
2021/01/18 Python
详解CSS 3 中的 calc() 方法
2018/01/12 HTML / CSS
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
医学生职业规划范文
2014/01/05 职场文书
安全生产责任书范本
2014/04/15 职场文书
另类冲刺标语
2014/06/24 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
入党培养人考察意见
2015/06/08 职场文书
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL