構建思路
創建兩個釘釘機器人(一個機器人發送構建信息,一個機器人發送測試用例結果),發送構建結果可以通過jenkins的釘釘插件實現,發送測試結果可以通過獲取測試報告數據用代碼給釘釘發送實現。
創建兩個任務,第一個任務使用jenkins插件,發送測試運行的結果(成功,失敗...)第二個任務關聯第一個任務,第一個任務觸發后,獲取最后一次的構建記錄,發送測試用例結果
發送構建結果
創建第一個釘釘機器人(怎么創建機器人就不做介紹了)
jenkins安裝釘釘插件
系統管理-插件管理-可選插件搜索“釘釘”,我這已經安裝,安裝后重啟jenkins
jenkins配置釘釘
系統管理-系統配置-釘釘
點擊測試,如果釘釘機器人發送如圖:說明釘釘配置成功。
發送任務構建結果
在配置任務中打開釘釘機器人即可
點擊立即構建,釘釘機器人就會發送構建結果如圖:
發送測試用例結果
python代碼
# 獲取jenkins構建信息和本次報告地址 import os import jenkins #安裝pip install python-jenkins import json import urllib3 # jenkins登錄地址 jenkins_url = "http://*******8:8080/" # 獲取jenkins對象 server = jenkins.Jenkins(jenkins_url, username='*****', password='*****') #Jenkins登錄名 ,密碼 # job名稱 job_name = "job/test_mock/" #Jenkins運行任務名稱 # job的url地址 job_url = jenkins_url + job_name # 獲取最后一次構建 job_last_build_url = server.get_info(job_name)['lastBuild']['url'] # 報告地址 report_url = job_last_build_url + 'allure' #'allure'為我的Jenkins全局工具配置中allure別名 ''' 釘釘推送方法: 讀取report文件中"prometheusData.txt",循環遍歷獲取需要的值。 使用釘釘機器人的接口,拼接后推送text ''' def DingTalkSend(): d = {} # 獲取項目絕對路徑 path = os.path.abspath(os.path.dirname((__file__))) # 打開prometheusData 獲取需要發送的信息 f = open(path + r'/allure-report/export/prometheusData.txt', 'r') for lines in f: for c in lines: launch_name = lines.strip('\n').split(' ')[0] num = lines.strip('\n').split(' ')[1] d.update({launch_name: num}) print(d) f.close() retries_run = d.get('launch_retries_run') # 運行總數 print('運行總數:{}'.format(retries_run)) status_passed = d.get('launch_status_passed') # 通過數量 print('通過數量:{}'.format(status_passed)) status_failed = d.get('launch_status_failed') # 不通過數量 print('通過數量:{}'.format(status_failed)) # 釘釘推送 url = 'https://oapi.dingtalk.com/robot/send?access_token=***************' # webhook con = {"msgtype": "text", "text": { "content": "Pytest_Allure_Demo自動化腳本執行完成。" "\n測試概述:" "\n運行總數:" + retries_run + "\n通過數量:" + status_passed + "\n失敗數量:" + status_failed + "\n構建地址:\n" + job_url + "\n報告地址:\n" + report_url } } urllib3.disable_warnings() http = urllib3.PoolManager() jd = json.dumps(con) jd = bytes(jd, 'utf-8') http.request('POST', url, body=jd, headers={'Content-Type': 'application/json'}) if __name__ == '__main__': DingTalkSend()
參考博客:https://blog.csdn.net/juejiang_lovingyou/article/details/104921840
將代碼放在jenkins生成allure報告同級目錄下
創建第二個機器人(這里需要加入IP段)
ip獲取:可以先隨意填寫,去jenkins-系統配置-釘釘中測試,看錯誤提示信息,將提示的ip加入ip段中
比如:
ip為123.232.***.***,就將這個ip加入到釘釘的IP段中,再將這個ip的123.232.***.0/24加入到IP段中,再點擊測試,重復前面操作,直到釘釘機器人發送消息
創建第二個任務
構建運行節點
構建觸發器
構建執行,運行代碼
應用,保存。
構建第一個任務第二個任務也會觸發 ,釘釘將會收到如圖: