每當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的自動化構建結果也可以企業微信通知,如下圖

還可以增加其他功能,等待大家去嘗試,如果有什么問題或者創新想法大家可以說一哈
