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调用命令行进度条的方法
May 05 Python
python简单实现计算过期时间的方法
Jun 09 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
Nov 29 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
python elasticsearch从创建索引到写入数据的全过程
Aug 04 Python
解析Python3中的Import
Oct 13 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
Apr 02 Python
解决Opencv+Python cv2.imshow闪退问题
Apr 24 Python
如何在scrapy中集成selenium爬取网页的方法
Nov 18 Python
PyQt实现计数器的方法示例
Jan 18 Python
Python Selenium操作Cookie的实例方法
Feb 28 Python
Python道路车道线检测的实现
Jun 27 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数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
2013/06/24 PHP
php备份数据库类分享
2015/04/14 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
WordPress网站性能优化指南
2015/11/18 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
很酷的javascript loading效果代码
2008/06/18 Javascript
基于jquery的滑动样例代码
2010/11/20 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
2018/07/06 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
Python使用requests发送POST请求实例代码
2018/01/25 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
详解Python是如何实现issubclass的
2019/07/24 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
建筑施工实习自我鉴定
2013/09/19 职场文书
商务英语求职自荐信范文
2013/12/24 职场文书
群众路线四风自我剖析材料
2014/10/08 职场文书
先进党支部事迹材料
2014/12/24 职场文书
大队委员竞选演讲稿
2015/11/20 职场文书
《观潮》教学反思
2016/02/17 职场文书
入党申请书格式
2019/06/20 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android
eclipse创建项目没有dynamic web的解决方法
2021/06/24 Java/Android
Minikube搭建Kubernetes集群
2022/03/31 Servers