基於jenkins構建結果企業微信提醒
阿新 • • 發佈:2020-08-28
每當jenkin在構建之後我們想把構建結果SUCCESS/FAILURE或者其他資訊通知給其他人,也許有人會說,不是有郵件提醒嗎?但是我這裡的環境郵件提醒的話所被通知者並不會第一時間去閱讀,所以我們用“釘釘”,“企業微信”來第一時間去通知你想通知的小夥伴們。
因為我這裡的環境用的是企業微信所以本文都是基於企業微信來說的,不過在釘釘上也可以使用,也可以利用釘釘在jenkins上的外掛,那樣更方便些。
進入正題
我們要獲得jenkin的構建結果是SUCCESS還是FAILURE是需要jenkin構建完畢才能獲取到的,那麼我們從哪裡能獲得構建結果以及其他資訊呢?
我們可以用日誌資訊或者api的構建資訊來獲取
我們 我們可以用日誌資訊或者api的構建資訊來獲取,這裡我們是基於檢視日誌來檢視構建結果以及其他資訊,我這裡以windows環境以及jenkins預設安裝環境來舉例
每一次日誌檔案的位置我們可以在如圖位置找到
我們去最後一次構建結果檢視日誌檔案
在結果檢視構建結果是否成功
那麼我們可以用python來寫個讀取結果的指令碼,用jenkins來自動執行
import requests import json import urllib.request import urllib.error import time # 獲取構建結果 def getResult(): fname = pathGitLab with open(fname,'rb') as f: #開啟檔案 first_line = f.readline()# 讀第一行# print( first_line) off = -50# 設定偏移量 while True: f.seek(off,2)# seek(off,2) 表示檔案指標: 從檔案末尾( 2) 開始向前50個字元(-50) lines = f.readlines()# 讀取檔案指標範圍內所有行# print( lines) if len(lines) >= 2: #判斷是否最後至少有兩行, 這樣保證了最後一行是完整的 last_line = lines[-1]# 取最後一行 print(last_line) break off *= 2 if 'FAILURE' in last_line.decode(): return 1 # else : #return 0 # 獲取下一次構建的Number和當前構建的number def getNextNumber(): f = open(r 'C:\Program Files (x86)\Jenkins\jobs\Developer\nextBuildNumber','r') currentNumber = int(f.read()) - 1 return currentNumber # 網路模組, 用於企業微信傳送資訊 def jenkins(result): url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=2ef5c862-b2a6-45bc-a183-ee6666666666666666'# 企業微信機器人的webhook if result == 1: con = { "msgtype": "text","text": { "content": "站點構建提醒\r\n構建站點:Developer\r\n構建結果:FAILURE\r\n構建失敗,請您檢查程式碼並重新構建,謝謝" },}# else :#con = { "msgtype": "text","text": { "content": "developer構建結果:構建失敗,請檢查程式碼後重試!" },} jd = json.dumps(con).encode('utf-8') req = urllib.request.Request(url,jd) req.add_header('Content-Type','application/json') response = urllib.request.urlopen(req) if __name__ == '__main__': jobCurrentNumber = getNextNumber()# 獲取當前構建number# print( jobCurrentNumber)# myDict = getDict()# 獲取同事所有聯絡方式# 獲取當前構建的目錄比如D: \ Jenkins\ jobs\ gk_check\ builds\ 153,path = "C:\\Program Files (x86)\\Jenkins\\jobs\\Developer\\builds\\" + str(jobCurrentNumber) + "\\" pathGitLab = path + "log" #獲取svn版本和id資訊的檔案路徑 pathAuthor = path + "changelog.xml" #獲取遞交者資訊的檔案路徑 result = getResult()# 讀取構建結果# print( result) jenkins(result)# 最後執行函式 getResult()
這裡的企業微信的webhook地址我們可以在如下的地方新增機器人
這樣就可以獲得webhook的地址來進行來進行企業微信提醒
接下來我們在jenkins的構建模組進行構建後操作
ping 127.1 -n 5 >nul # 延遲5秒,目的是的等jenkins構建完成來獲取結果 @echo off D: cd D:\test start python developer_error.py #執行指令碼
這裡再簡單說下curl 進行企業微信提醒
可以在構建最開始和結尾執行curl的命令
ios和Android的自動化構建結果也可以企業微信通知,如下圖
還可以增加其他功能,等待大家去嘗試,如果有什麼問題或者創新想法大家可以說一哈
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。