自動化執行 - 釘釘機器人通知


背景

公司內部用釘釘來辦公,釘釘支持機器人提醒,有各種各樣的機器人提供選擇,可以根據需求來定制機器人,達到提醒功能,如提醒某人請下午茶,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. 多接觸/嘗試新的東西沒錯;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM