jenkins構建結果企業微信提醒


每當jenkin在構建之后我們想把構建結果SUCCESS/FAILURE或者其他信息通知給其他人,也許有人會說,不是有郵件提醒嗎?但是我這里的環境郵件提醒的話所被通知者並不會第一時間去閱讀,所以我們用“釘釘”,“企業微信”來第一時間去通知你想通知的小伙伴們。

因為我這里的環境用的是企業微信所以本文都是基於企業微信來說的,不過在釘釘上也可以使用,也可以利用釘釘在jenkins上的插件,那樣更方便些。

進入正題

我們要獲得jenkin的構建結果是SUCCESS還是FAILURE是需要jenkin構建完畢才能獲取到的,那么我們從哪里能獲得構建結果以及其他信息呢?

我們可以用日志信息或者api的構建信息來獲取

我們 我們可以用日志信息或者api的構建信息來獲取,這里我們是基於查看日志來查看構建結果以及其他信息,我這里以windows環境以及jenkins默認安裝環境來舉例

每一次日志文件的位置我們可以在如圖位置找到

jenkins構建結果企業微信提醒

我們去最后一次構建結果查看日志文件

jenkins構建結果企業微信提醒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()

jenkins構建結果企業微信提醒

這里的企業微信的webhook地址我們可以在如下的地方添加機器人

jenkins構建結果企業微信提醒jenkins構建結果企業微信提醒

這樣就可以獲得webhook的地址來進行來進行企業微信提醒

接下來我們在jenkins的構建模塊進行構建后操作

jenkins構建結果企業微信提醒

ping 127.1 -n 5 >nul     # 延遲5秒,目的是的等jenkins構建完成來獲取結果
@echo off
D:
cd D:\test
start python developer_error.py    #執行腳本

jenkins構建結果企業微信提醒

這里再簡單說下curl 進行企業微信提醒

可以在構建最開始和結尾執行curl的命令

jenkins構建結果企業微信提醒jenkins構建結果企業微信提醒jenkins構建結果企業微信提醒

ios和Android的自動化構建結果也可以企業微信通知,如下圖

jenkins構建結果企業微信提醒

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


免責聲明!

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



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