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中的多条件排序实现
Jun 07 Python
Python 爬虫模拟登陆知乎
Sep 23 Python
Python编程实现删除VC临时文件及Debug目录的方法
Mar 22 Python
Python实现正则表达式匹配任意的邮箱方法
Dec 20 Python
Python实现京东秒杀功能代码
May 16 Python
python基于递归解决背包问题详解
Jul 03 Python
python pip源配置,pip配置文件存放位置的方法
Jul 12 Python
Django用户认证系统 Web请求中的认证解析
Aug 02 Python
Python3之字节串bytes与字节数组bytearray的使用详解
Aug 27 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
Oct 24 Python
Django与pyecharts结合的实例代码
May 13 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 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过滤黑名单关键字的方法
2014/12/01 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
用javascript模仿ie的自动完成类似自动完成功的表单
2012/12/12 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
axios学习教程全攻略
2017/03/26 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
python批量修改文件名的实现代码
2014/09/01 Python
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
python从入门到精通(DAY 3)
2015/12/20 Python
Python延时操作实现方法示例
2018/08/14 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
selenium+python环境配置教程详解
2019/05/28 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
Django中的用户身份验证示例详解
2019/08/07 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
美国第二大连锁书店:Books-A-Million
2017/12/28 全球购物
机械电子工程毕业生自荐信
2013/11/23 职场文书
九年级化学教学反思
2014/01/28 职场文书
工程造价专业大学生职业规划范文
2014/03/09 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
代办社保委托书范文
2014/10/06 职场文书
感谢信格式范文
2015/01/22 职场文书
电力工程合作意向书
2015/05/11 职场文书
Redis 哨兵机制及配置实现
2022/03/25 Redis