基于jenkins构建结果企业微信提醒

时间:2021-05-19

每当jenkin在构建之后我们想把构建结果SUCCESS/FAILURE或者其他信息通知给其他人,也许有人会说,不是有邮件提醒吗?但是我这里的环境邮件提醒的话所被通知者并不会第一时间去阅读,所以我们用“钉钉”,“企业微信”来第一时间去通知你想通知的小伙伴们。

因为我这里的环境用的是企业微信所以本文都是基于企业微信来说的,不过在钉钉上也可以使用,也可以利用钉钉在jenkins上的插件,那样更方便些。

进入正题

我们要获得jenkin的构建结果是SUCCESS还是FAILURE是需要jenkin构建完毕才能获取到的,那么我们从哪里能获得构建结果以及其他信息呢?

我们可以用日志信息或者api的构建信息来获取

我们 我们可以用日志信息或者api的构建信息来获取,这里我们是基于查看日志来查看构建结果以及其他信息,我这里以windows环境以及jenkins默认安装环境来举例

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

我们去最后一次构建结果查看日志文件

在结果查看构建结果是否成功

那么我们可以用python来写个读取结果的脚本,用jenkins来自动运行

import requestsimport jsonimport urllib.requestimport urllib.errorimport time# 获取构建结果def getResult(): fname = pathGitLabwith 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)breakoff *= 2if 'FAILURE' in last_line.decode(): return 1#else : #return 0# 获取下一次构建的Number和当前构建的numberdef getNextNumber(): f = open(r 'C:\Program Files (x86)\Jenkins\jobs\Developer\nextBuildNumber', 'r')currentNumber = int(f.read()) - 1return currentNumber# 网络模块, 用于企业微信发送信息def jenkins(result): url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=2ef5c862-b2a6-45bc-a183-ee6666666666666666'#企业微信机器人的webhookif 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 offD:cd D:\teststart python developer_error.py #执行脚本

这里再简单说下curl 进行企业微信提醒

可以在构建最开始和结尾执行curl的命令

ios和Android的自动化构建结果也可以企业微信通知,如下图

还可以增加其他功能,等待大家去尝试,如果有什么问题或者创新想法大家可以说一哈

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章