日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:27日期: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 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品乱码久久久久久蜜桃麻豆| 久久精品青草| 亚洲伦乱视频| 亚洲天堂av资源在线观看| 久久精品1区| 国产亚洲一区二区手机在线观看| 精品72久久久久中文字幕| 国产精品久久乐| 久久尤物视频| 亚洲涩涩在线| 欧美特黄一区| 亚洲精品影院在线观看| 日韩激情综合| 精品视频一区二区三区在线观看| 国产精品成人自拍| 亚洲二区三区不卡| 欧美日韩国产综合网| 亚洲天堂av影院| 欧美日韩高清| 亚洲一区二区三区四区电影| 日韩欧美四区| 国产极品一区| 99精品在线观看| 午夜久久av| 国产一区二区三区四区二区 | 国产精品白丝一区二区三区| 久久久久伊人| 欧美一级专区| 国语精品一区| 综合激情一区| 日韩一区二区三区免费播放| 欧美成人基地 | 欧美日韩在线观看首页| 亚洲一区二区动漫| 久久一区欧美| 日韩精品成人在线观看| 日本亚洲视频在线| 最近高清中文在线字幕在线观看1| 红桃视频国产一区| 麻豆精品视频在线观看| 亚洲少妇自拍| 国产a亚洲精品| 妖精视频成人观看www| 蜜桃视频在线观看一区| 国产福利电影在线播放| 在线日韩中文| 亚洲在线久久| 色网在线免费观看| 老司机免费视频一区二区三区| 99亚洲视频| 99久久精品费精品国产| 久久99国产精品视频| 青青草伊人久久| 免费不卡在线视频| 久久国产福利| 在线综合欧美| 午夜欧美视频| 99xxxx成人网| 丝袜美腿一区| 亚洲午夜黄色| 一区二区三区视频免费观看| 麻豆成人综合网| 国产精品99久久免费观看| 日本免费在线视频不卡一不卡二| 午夜精品网站| 只有精品亚洲| 欧美视频二区| 久久精品一本| 成人国产精品一区二区免费麻豆| 开心激情综合| 日韩理论视频| 五月天久久久| 中文字幕av一区二区三区四区| 午夜久久免费观看| 美女久久网站| 国产欧美69| 欧美亚洲日本精品| 欧美 日韩 国产一区二区在线视频| 日韩精品一区二区三区av| 欧美一级网址| 色乱码一区二区三区网站| 91精品xxx在线观看| 欧美日韩国产高清| 99精品国产一区二区三区| 日本亚洲不卡| 精品三级在线观看视频| 精品中文一区| 国产精品一区二区三区www| 国产精品任我爽爆在线播放| 在线天堂中文资源最新版| 国产日产精品_国产精品毛片 | 国产 日韩 欧美 综合 一区| 日本精品不卡| 少妇精品久久久一区二区| 久久字幕精品一区| 久久九九精品| 欧美日韩亚洲三区| 激情综合自拍| 欧美国产专区| 亚洲有吗中文字幕| 日韩在线综合| 久久av免费看| 亚洲永久精品唐人导航网址| 日韩成人三级| 亚欧洲精品视频在线观看| 亚洲在线一区| 三级小说欧洲区亚洲区| 久久亚州av| 婷婷亚洲精品| 国产精品一区二区精品| 不卡中文一二三区| 成人在线视频免费看| 欧美一区久久| 一级欧美视频| 国产偷自视频区视频一区二区| 精品中国亚洲| 国产精品亚洲片在线播放| 久久国产高清| 手机精品视频在线观看| 国产专区一区| 尤物tv在线精品| 日本久久成人网| 国产不卡人人| 日韩激情一区| 日韩久久视频| 九九九精品视频| 九九99久久精品在免费线bt| 午夜欧美视频| 久久久蜜桃一区二区人| 国产欧美成人| 国产精品资源| 国产免费av一区二区三区| 日本不卡一二三区黄网| 影音国产精品| 婷婷成人av| 欧美在线黄色| 日本va欧美va瓶| 欧美亚洲综合视频| 精品视频在线观看网站| 国产精品99在线观看| 美女尤物国产一区| 久久精品亚洲| 成人看片网站| 午夜欧美视频| 视频一区视频二区中文| 在线日韩视频| 日韩欧美另类中文字幕| 国产精品18| 久久婷婷久久| 欧美一区久久久| 久久久天天操| 日韩视频1区| 国产suv精品一区| 久久国产88| 精品国产一区二区三区av片| 丁香婷婷久久| 羞羞答答国产精品www一本| 国产欧美日韩免费观看| 国产精品蜜芽在线观看| 91久久视频| 久久99精品久久久久久园产越南| 日韩免费高清| 91麻豆精品| 好吊视频一区二区三区四区| 国产亚洲观看| 蜜臀精品一区二区三区在线观看 | 国产精品成人一区二区网站软件| 国产盗摄——sm在线视频| 另类激情亚洲| 日韩久久电影| 久久精品理论片| 亚洲免费福利一区| 日韩毛片在线| 国产精品亚洲产品| 亚洲三级网址| 久久精品不卡| 久久狠狠亚洲综合| 午夜久久免费观看| 欧美91在线| 日本不卡在线视频| 国产综合亚洲精品一区二| 久久av超碰| 国产麻豆综合| 中文av在线全新| av不卡免费看| 91午夜精品| 蜜桃传媒麻豆第一区在线观看| 成人欧美一区二区三区的电影| 国产免费av国片精品草莓男男| 亚洲精品大全| 日韩欧美三区| 亚洲一区有码| 丰满少妇一区| 国产精品一区亚洲| 久久国产精品免费一区二区三区| 视频在线观看91| 麻豆精品视频在线观看| 欧美另类综合| 蜜桃tv一区二区三区| 精品久久在线|