基于jenkins構建結果企業(yè)微信提醒
每當jenkin在構建之后我們想把構建結果SUCCESS/FAILURE或者其他信息通知給其他人,也許有人會說,不是有郵件提醒嗎?但是我這里的環(huán)境郵件提醒的話所被通知者并不會第一時間去閱讀,所以我們用“釘釘”,“企業(yè)微信”來第一時間去通知你想通知的小伙伴們。
因為我這里的環(huán)境用的是企業(yè)微信所以本文都是基于企業(yè)微信來說的,不過在釘釘上也可以使用,也可以利用釘釘在jenkins上的插件,那樣更方便些。
進入正題
我們要獲得jenkin的構建結果是SUCCESS還是FAILURE是需要jenkin構建完畢才能獲取到的,那么我們從哪里能獲得構建結果以及其他信息呢?
我們可以用日志信息或者api的構建信息來獲取
我們 我們可以用日志信息或者api的構建信息來獲取,這里我們是基于查看日志來查看構建結果以及其他信息,我這里以windows環(huán)境以及jenkins默認安裝環(huán)境來舉例
每一次日志文件的位置我們可以在如圖位置找到

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


在結果查看構建結果是否成功
那么我們可以用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
# 網絡模塊, 用于企業(yè)微信發(fā)送信息
def jenkins(result):
url =
'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=2ef5c862-b2a6-45bc-a183-ee6666666666666666'#
企業(yè)微信機器人的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()# 獲取同事所有聯(lián)系方式# 獲取當前構建的目錄比如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)# 最后執(zhí)行函數(shù)
getResult()

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


這樣就可以獲得webhook的地址來進行來進行企業(yè)微信提醒
接下來我們在jenkins的構建模塊進行構建后操作

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

這里再簡單說下curl 進行企業(yè)微信提醒
可以在構建最開始和結尾執(zhí)行curl的命令



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

還可以增加其他功能,等待大家去嘗試,如果有什么問題或者創(chuàng)新想法大家可以說一哈
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Jenkins與SVN持續(xù)集成的示例代碼
- Jenkins節(jié)點配置實現(xiàn)原理及過程解析
- Jenkins環(huán)境搭建實現(xiàn)過程圖解
- Jenkins集成sonarQube實現(xiàn)代碼質量檢查過程圖解
- Jenkins遷移job插件Job Import Plugin流程詳解
- 基于Jenkins搭建.NET FrameWork持續(xù)集成環(huán)境
- 基于Jenkins搭建.NET Core持續(xù)集成環(huán)境過程圖解
- 基于python調用jenkins-cli實現(xiàn)快速發(fā)布
- Jenkins源代碼管理SVN實現(xiàn)步驟解析
相關文章
Docker 部署 SpringBoot 項目整合 Redis 鏡像做訪問計數(shù)示例代碼
這篇文章主要介紹了Docker 部署 SpringBoot 項目整合 Redis 鏡像做訪問計數(shù)Demo,本文給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下2018-01-01
Kafka單節(jié)點偽分布式集群搭建實現(xiàn)過程詳解
這篇文章主要介紹了Kafka單節(jié)點偽分布式集群搭建實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11
SpringCloud組件之Eureka Server詳細啟動過程及說明
這篇文章主要介紹了SpringCloud組件之Eureka Server詳細啟動過程及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
webuploader在springMVC+jquery+Java開發(fā)環(huán)境下的大文件分片上傳的實例代碼
這篇文章主要介紹了webuploader在springMVC+jquery+Java開發(fā)環(huán)境下的大文件分片上傳的實例代碼,需要的朋友可以參考下2017-04-04

