背景
公司內部用釘釘來辦公,釘釘支持機器人提醒,有各種各樣的機器人提供選擇,可以根據需求來定制機器人,達到提醒功能,如提醒某人請下午茶,233
思路
1. 添加機器人到群組中,這次將的是“自定義”機器人;
2. 添加后會發現有一個webhook的鏈接,可以點擊“設置說明”查看詳情
3. 可以通過post請求網這個webhook發送信息,機器人就可以在群里展示信息,文檔里有定義不同的請求body;
文檔地址:https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.karFPe&treeId=257&articleId=105735&docType=1
這里需要吐槽的一點,目前只發現text類型支持換行
4. 關鍵就是post請求里面的信息的填充,如果想到用python來處理;
5. 編寫python腳本:大致思路就是解析自動化result文件,組裝post請求
實際代碼如下:
import requests import time import json import sys import hashlib import xml.dom.minidom HEADERS = {'ua': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36'} DINGDING_URL= 'https://oapi.dingtalk.com/robot/send?access_token=your_access_token' RESULT_FILE= '/var/lib/jenkins/workspace/wm-api-autotest/target/surefire-reports/testng-results.xml' REPORT_URL_FILE= '/var/lib/jenkins/workspace/wm-api-autotest/target/allure-results/executor.json' class Message(): def __init__(self): self.total=0; self.passed=0; self.failed=0; self.skipped=0; self.reportUrl=""; #解析文件獲取結果數據 def analyze(self): #打開xml文檔 dom = xml.dom.minidom.parse(RESULT_FILE) #得到文檔元素對象 root = dom.documentElement self.total = root.getAttribute('total') self.passed = root.getAttribute('passed') self.failed = root.getAttribute('failed') self.skipped = root.getAttribute('skipped') #構建的次數統計在json文件中 file = open(REPORT_URL_FILE,'r') self.reportUrl=json.load(file)['reportUrl'] #發送報告 def send_message_to_robot(self): url= DINGDING_URL message='wm-api自動化執行結果:\n本次執行了{}條用例;\n成功了{}條;\n失敗了{}條;\n跳過了{}條;\n查看詳情請點擊=> {}'.format(self.total,self.passed,self.failed,self.skipped,self.reportUrl) data={"msgtype":"text","text":{"content":message,"title":"wm-api自動化結果通知"}} try: resp = requests.post(url,headers=HEADERS,json=data,timeout=(3,60)) except: print ("Send Message is fail!"); if __name__ == '__main__': message = Message() message.analyze(); message.send_message_to_robot();
6. jenkins設置,需要新增一個插件“Post build task”,用於構建后執行shell命令
7. 實際結果展示:
小結
1. 之前用郵件提醒,但郵件這東西容易被忽略,可以借助其他工具,如釘釘提醒;
2. 多接觸/嘗試新的東西沒錯;