电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python-jenkins模塊獲取jobs的執行狀態操作

瀏覽:4日期:2022-07-25 18:06:05

1 獲取jobs的當前任務狀態

server_1 = jenkins.Jenkins(’http://%s:%s@192.168.37.134:8081/’,username, password)

獲取狀態前先確認2019文件夾下的get_node_list任務是否存在:

server_1.assert_job_exists(’2019/get_node_list’)

獲取最后一次完成(不包括執行中的)的job任務執行number:

server_1.get_job_info(’2019/get_node_list’)[’lastCompletedBuild’][’number’]

查看job狀態(SUCCESS/FAILURE/ABORTED):

server_1.get_build_info(’2019/get_node_list’,3)[’result’]server_1.get_build_console_output(’2019/get_node_list’,7).split(’n’)[-2].split(’:’)[-1].strip()

啟動jobs:

server_1.build_job(’2019/get_node_list’)

在job執行結束前使用server_1.get_build_console_output(‘2019/get_node_list’,7).split(’n’)[-2].split(’:’)[-1].strip()獲取的狀態信息不符合預期。

job狀態應該還包括running,pending狀態,那么獲取job的當前狀態正確姿勢如下:

job_name = ’2019/get_node_list’def get_jobs_status(job_name,server): try: server.assert_job_exists(job_name) except Exception as e: print(e) job_statue = ’1’ #判斷job是否處于排隊狀態 inQueue = server.get_job_info(job_name)[’inQueue’] if str(inQueue) == ’True’: job_statue = ’pending’ running_number = server.get_job_info(job_name)[’nextBuildNumber’] else: #先假設job處于running狀態,則running_number = nextBuildNumber -1 ,執行中的job的nextBuildNumber已經更新 running_number = server.get_job_info(job_name)[’nextBuildNumber’] -1 try: running_status = server.get_build_info(job_name,running_number)[’building’] if str(running_status) == ’True’:job_statue = ’running’ else:#若running_status不是True說明job執行完成job_statue = server.get_build_info(job_name,running_number)[’result’] except Exception as e: #上面假設job處于running狀態的假設不成立,則job的最新number應該是[’lastCompletedBuild’][’number’] lastCompletedBuild_number = server.get_job_info(job_name)[’lastCompletedBuild’][’number’] job_statue = server.get_build_info(job_name,lastCompletedBuild_number)[’result’] return job_statue,running_number

注意:

可能還存在下圖的情況,這個時候獲取的是26的狀態,這時候也許你想獲取25的狀態,26是不小心誤操作觸發的,這個時候任務的最新狀態也許就無法滿足預期要求,或者是支持并發構建的job場景中就不適用了,關鍵還是需要結合應用場景制定對應的方案。

Python-jenkins模塊獲取jobs的執行狀態操作

2 統計jobs的執行成功率和平均執行時間

統計場景說明:

設計了一個統計job執行成功率的工程,主要從執行時間以及視圖兩個維度來劃定需要統計的jobs及jobs對應的運行范圍。

在這里我在job里面添加了DAYS和VIEWS兩個參數:

**DAYS:**默認統計最近一天的運行情況,如果執行的時候輸入的是0則代表統計所有的運行情況。

**VIEWS:**對應的是視圖名稱,“2019-1,test”代表統計這兩個視圖的運行情況

Python-jenkins模塊獲取jobs的執行狀態操作

對應的視圖如下:

Python-jenkins模塊獲取jobs的執行狀態操作

執行成功后以表格形式列出統計的數據,表頭如下

Python-jenkins模塊獲取jobs的執行狀態操作

列出了序號、視圖名稱、job名稱、job執行成功的平均執行時間、job執行成功次數、總的執行時間、job執行成功率

job執行演示:

執行構建時配置的參數如下

Python-jenkins模塊獲取jobs的執行狀態操作

job_data任務的主要執行內容如下:

Python-jenkins模塊獲取jobs的執行狀態操作

執行成功后查看HTML_Report統計的數據如下:

Python-jenkins模塊獲取jobs的執行狀態操作

get_job_data.py源碼如下:

#!/usr/bin/env python# -*- coding:utf-8 -*-# author: Sudley# ctime: 2020/02/12import sysimport jenkinsimport timefrom dominate.tags import *def Count_the_success_rate_of_jobs(days,views): username = ’sudley’ password = ’******’ with open(’//home/Sudley/python-jenkins/get_job_data.txt’,’w’) as f: print(’create a new file //home/Sudley/python-jenkins/get_job_data.txt’) serial_number = 0 #統計任務的累計序號 for view in views.split(’,’): #根據視圖名稱拼接視圖的URL,多個視圖間用’,’分隔 URL = (’http://%s:%s@192.168.37.134:8081/job/2019/view/%s/’)%(username, password, view) server = jenkins.Jenkins(URL) #依次獲取當前view視圖中jobs的信息 for num in range(0,len(server.get_all_jobs())): job_name = server.get_all_jobs()[num][’fullname’] #獲取最后一次完成構建的編號,用于劃定時間范圍(如果需要的話) try:lastCompletedBuild_num = server.get_job_info(job_name)[’lastCompletedBuild’][’number’] except:#假如job下面一個構建記錄都沒有則補0print(’There is not build number in’,job_name)average_success_duration = success_count = all_count = success_rate = 0line = str(serial_number) + ’ ’ + view + ’ ’ + job_name + ’ ’ + str(int(average_success_duration)) + ’ ’ + str(success_count) + ’ ’ + str(all_count) + ’ ’ + str(success_rate) + ’%’with open(’//home/Sudley/python-jenkins/get_job_data.txt’,’a’) as f: f.write(str(line)) f.write(’n’)serial_number = serial_number + 1continue #獲取最后一次完成構建的時間戳,單位由毫秒轉換為秒 lastCompletedBuild_timestamp = server.get_build_info(job_name,lastCompletedBuild_num)[’timestamp’] / 1000 #將時間先由秒轉化為元組在轉化為字符串并取到天數 lastCompletedBuild_date = time.strftime('%Y%m%d',time.localtime(lastCompletedBuild_timestamp)) #print(lastCompletedBuild_date) #根據變量days和lastCompletedBuild_timestamp計算出days天前的日期,若days為0則沒有日期限制,統計之前運行的所有任務 if str(days) == ’0’:end_date = ’false’ else:end_timestamp = float(lastCompletedBuild_timestamp) - float(days) * 24 * 3600end_date = time.strftime('%Y%m%d',time.localtime(end_timestamp)) #print(end_date) #獲取days天內job的執行情況 success_count = 0#job執行成功的總數 success_duration = 0 #執行成功的job執行時間之和,單位是s for number in range(0,len(server.get_job_info(job_name)[’builds’])):job_build_number = server.get_job_info(job_name)[’builds’][number][’number’]job_build_timestamp = server.get_build_info(job_name,job_build_number)[’timestamp’] / 1000job_build_date = time.strftime('%Y%m%d',time.localtime(job_build_timestamp))#如果日期和end_date相同則終止此job數據的累計if job_build_date == end_date: number = number - 1 break#累計執行成功的次數和duration執行時間job_build_result = server.get_build_info(job_name,job_build_number)[’result’]if str(job_build_result) == ’SUCCESS’: job_build_duration = server.get_build_info(job_name,job_build_number)[’duration’] success_duration = success_duration + job_build_duration / 1000 success_count = success_count + 1 #計算執行成功的平均執行時間和成功率,打印關鍵信息 all_count = number + 1 success_rate = success_count * 1.0 / all_count * 100 if success_count == 0:average_success_duration = success_duration else:average_success_duration = success_duration * 1.0 / success_count #將關心的數據按照一定的格式寫到/home/Sudley/python-jenkins/get_job_data.txt文件中 line = str(serial_number) + ’ ’ + view + ’ ’ + job_name + ’ ’ + str(int(average_success_duration)) + ’ ’ + str(success_count) + ’ ’ + str(all_count) + ’ ’ + str(round(success_rate,2)) + ’%’ with open(’//home/Sudley/python-jenkins/get_job_data.txt’,’a’) as f:f.write(str(line))f.write(’n’) serial_number = serial_number + 1def txt2xml(): h = html() with h.add(body()): h2(’job執行效率統計’) caption(’summary:’) with table(border='2',cellspacing='0'): l = tr(bgcolor='#0000FF') l += th(’序號’) l += th(’view_name’) l += th(’job_name’) l += th(’average_success_duration’) l += th(’success_count’) l += th(’all_count’) l += th(’success_rate’) file=open(’/home/Sudley/python-jenkins/get_job_data.txt’) for line in file.readlines():curLine=line.strip().split(' ')l = tr()for i in range(0,len(curLine)): l += td(curLine[i]) with open(’/home/Sudley/python-jenkins/get_job_data.html’,’w’) as f: f.write(h.render())if __name__ == ’__main__’ : days = sys.argv[1] views = sys.argv[2] Count_the_success_rate_of_jobs(days,views) txt2xml()

以上這篇Python-jenkins模塊獲取jobs的執行狀態操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 屏蔽泵厂家,化工屏蔽泵_维修-淄博泵业| 郑州爱婴幼师学校_专业幼师培训_托育师培训_幼儿教育培训学校 | 低浓度恒温恒湿称量系统,强光光照培养箱-上海三腾仪器有限公司 | 光栅尺_Magnescale探规_磁栅尺_笔式位移传感器_苏州德美达 | atcc网站,sigma试剂价格,肿瘤细胞现货,人结肠癌细胞株购买-南京科佰生物 | 健身器材-健身器材厂家专卖-上海七诚健身器材有限公司 | 机器视觉检测系统-视觉检测系统-机器视觉系统-ccd检测系统-视觉控制器-视控一体机 -海克易邦 | 海德莱电力(HYDELEY)-无功补偿元器件生产厂家-二十年专业从事电力电容器 | 自恢复保险丝_贴片保险丝_力特保险丝_Littelfuse_可恢复保险丝供应商-秦晋电子 | 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 | 气密性检测仪_气密性检测设备_防水测试仪_密封测试仪-岳信仪器 | 阿尔法-MDR2000无转子硫化仪-STM566 SATRA拉力试验机-青岛阿尔法仪器有限公司 | 专注提供国外机电设备及配件-工业控制领域一站式服务商-深圳市华联欧国际贸易有限公司 | 数字展示在线_数字展示行业门户网站 | 过滤器_自清洗过滤器_气体过滤器_苏州华凯过滤技术有限公司 | 杭州翻译公司_驾照翻译_专业人工翻译-杭州以琳翻译有限公司官网 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 | 红外光谱仪维修_二手红外光谱仪_红外压片机_红外附件-天津博精仪器 | 手机游戏_热门软件app下载_好玩的安卓游戏下载基地-吾爱下载站 | 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 磁粉制动器|张力控制器|气胀轴|伺服纠偏控制器整套厂家--台灵机电官网 | 丽陂特官网_手机信号屏蔽器_Wifi信号干扰器厂家_学校考场工厂会议室屏蔽仪 | 紫外可见光分光度计-紫外分光度计-分光光度仪-屹谱仪器制造(上海)有限公司 | 无轨电动平车_轨道平车_蓄电池电动平车★尽在新乡百特智能转运设备有限公司 | 西门子伺服电机维修,西门子电源模块维修,西门子驱动模块维修-上海渠利 | 不锈钢丸厂家,铝丸,铸钢丸-淄博智源铸造材料有限公司 | 座椅式升降机_无障碍升降平台_残疾人升降平台-南京明顺机械设备有限公司 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 德国进口电锅炉_商用电热水器_壁挂炉_电采暖器_电热锅炉[德国宝] | 球盟会·(中国)官方网站| 广州食堂承包_广州团餐配送_广州堂食餐饮服务公司 - 旺记餐饮 | 国产液相色谱仪-超高效液相色谱仪厂家-上海伍丰科学仪器有限公司 | 淋巴细胞分离液_口腔医疗器材-精欣华医疗器械(无锡)有限公司 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | 专业深孔加工_东莞深孔钻加工_东莞深孔钻_东莞深孔加工_模具深孔钻加工厂-东莞市超耀实业有限公司 | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | 运动木地板厂家_体育木地板安装_篮球木地板选购_实木运动地板价格 | 缠绕机|缠绕膜包装机|缠绕包装机-上海晏陵智能设备有限公司 | 轴流风机-鼓风机-离心风机-散热风扇-罩极电机,生产厂家-首肯电子 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 |