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实现的登陆Discuz!论坛通用代码分享
Jul 11 Python
详解Python中的元组与逻辑运算符
Oct 13 Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 Python
python在不同层级目录import模块的方法
Jan 31 Python
关于Python面向对象编程的知识点总结
Feb 14 Python
python WindowsError的错误代码详解
Jul 23 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
python3中property使用方法详解
Apr 23 Python
使用GitHub和Python实现持续部署的方法
May 09 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
Jun 03 Python
python属于解释语言吗
Jun 11 Python
Python模块zipfile原理及使用方法详解
Aug 04 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 组件化编程技巧
2009/06/06 PHP
php foreach正序倒序输出示例代码
2014/07/01 PHP
php中函数前加&amp;符号的作用分解
2014/07/08 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
javascript 拖放效果实现代码
2010/01/22 Javascript
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
JS控制弹出新页面窗口位置和大小的方法
2015/03/02 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
JQuery给select添加/删除节点的实现代码
2016/04/26 Javascript
ReactNative实现图片上传功能的示例代码
2017/07/11 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
JavaScript设计模式之享元模式实例详解
2019/01/17 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
[02:30]辉夜杯主赛事第二日胜者组半决赛 CDEC.Y赛后采访
2015/12/26 DOTA
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
[56:17]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
python实现从本地摄像头和网络摄像头截取图片功能
2019/07/11 Python
Django CBV类的用法详解
2019/07/26 Python
python将unicode和str互相转化的实现
2020/05/11 Python
Flask处理Web表单的实现方法
2021/01/31 Python
先进个人事迹材料
2014/01/25 职场文书
美术毕业生求职信
2014/02/25 职场文书
会计电算化实训报告
2014/11/04 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python
go goroutine 怎样进行错误处理
2021/07/16 Golang