zoukankan      html  css  js  c++  java
  • 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)JenkinsjobsDeveloper
    extBuildNumber', '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": "站点构建提醒
    构建站点:Developer
    构建结果:FAILURE
    构建失败,请您检查代码并重新构建,谢谢"},}
            # 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:Jenkinsjobsgk_checkuilds153,
        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:	est
    start python developer_error.py    #执行脚本

    jenkins构建结果企业微信提醒

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

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

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

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

    jenkins构建结果企业微信提醒

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

  • 相关阅读:
    窗体1打开窗体2的方法
    C#中窗体间传递数据的几种方法(转载)
    只读字段和常量
    Datepicker控件
    .NET中的加密和解密
    ASP.NET网页生命周期事件
    hdu 1394 Minimum Inversion Number(逆序数对) : 树状数组 O(nlogn)
    我的第一次博客
    弹性布局
    HTML标签部分(块级/行级)
  • 原文地址:https://www.cnblogs.com/shook/p/11187526.html
Copyright © 2011-2022 走看看