• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python使用jenkins发送企业微信通知的实现

    如果只是想实现将jenkins的构建结果发送到企业微信进行通知,最简便的方式是安装Qy Wechat Notification Plugin插件,网上教程很多就不重复写了,可参考:

    一、前言

    最近使用Jenkins进行自动化部署,但是部署后,并没有相应的通知,虽然有邮件发送通知,但是发现邮件会受限于接收方的接收设置,导致不能及时看到相关的发布内容。而由于公司使用的是企业微信,因此考虑Jenkins通知企业微信机器人的实现方式。

    二、使用企业微信推送的优势

    实时提醒项目参与人员项目信息的更新情况

    便于查看

    三、配置

    3.1 企业微信的配置

    3.1.1 进入企业微信群

    进入某个群 -> 右击群标签,添加群机器人
    注意:企业微信貌似没有像钉钉那样设置配置群机器人权限,因此任何人都能添加机器人。相对于钉钉有点落后

    3.1.2 填写机器人信息


    企业微信的机器人相较于钉钉机器人而言,太简单了。

    3.1.3 复制Hook地址

    注意:此处的Webhook将用于Jenkins当中的参数配置。

    3.2 Jenkins的配置

    3.2.1 安装插件

    安装插件后返回首页

    3.2.2 配置Webhook

    设置Webhook

    3.3测试

    实现的效果如下:

    以下是实现可配置的企业微信通知

    1.建企业微信群,添加群机器人,获取机器人的webhook地址

    2.jenkins中创建项目,配置如下:

    general下This project is parameterized,添加两个string parameter

    分别为企业微信机器人的webhook和项目异常时需通知的责任人

    用户默认值填对应企业微信群中的用户名,才可保证发通知时能够@到对应的人,多个用户名之间用英文逗号隔开

    填写构建执行命令

    构建命令说明如下:

    #执行测试用例 pybot.bat 用例路径
    #将控制台输出导出到log.txt文件,控制台不再打印日志 >log.txt 
    #如果前面一条指令执行失败才执行||后面的指令 ||
    #如果前面一条指令执行成功才执行后面的指令 
    #执行python脚本,发送企业微信通知,传入webhook地址,jenkins项目名称,发送通知@责任人 python ../wechatNotice.py %url% %JOB_NAME% %principal%
    
    pybot.bat 目录名称/***.robot >log.txt || python ../wechatNotice.py %url% %JOB_NAME% %principal%

    以上设置好,即可保存该项目

    3.本次使用的是robot框架,测试用例运行完成后控制台输出的日志导出到log.txt文件如下

    根据导出的日志获取运行失败的测试用例标题

    #GetCaseTitle.py
    #通过控制台输出的日志查找是否有运行失败的用例,如有则获取失败用例的标题
     
    class GetCaseTitle:
        def __init__(self):
            self.file = "log.txt"  #使用jenkins运行测试用例时,会将控制台输出的日志保存到log.txt文件
     
        def get_fail_case_title(self):
            fail_case_line = []
            file = open(self.file, 'r', encoding='gbk')
            for line in file:  # 查找失败的用例行
                if "FAIL" in line:
                    line = str(line).replace(" ", "")
                    fail_case_line.append(line)
            file.close()
     
            if len(fail_case_line)>0: #如果标记为失败的行数大于0
                fail_case_line = fail_case_line[:-1]  # 去掉最后1行的总运行结果行
     
                fail_case_title = []
                for title in fail_case_line:  # 分别获取失败case的标题
                    title = title.split('|')[0]
                    if title not in fail_case_line[-1]:  # 判断当前是否是最后一个用例标题,是则后面不再添加|符号
                        fail_case_title.append(title + '  |  ')
                    else:
                        fail_case_title.append(title)
                fail_case_title = ''.join(fail_case_title)
                return fail_case_title
            else:
                return 0
     
    if __name__ == "__main__":
        GetCaseTitle().get_fail_case_title()

    如存在运行失败的测试用例,则发送企业微信通知

    #wechatNotice.py
    #实现企业微信通知
     
    import requests
    import json
    import urllib3
    # import time
    import sys
    from GetCaseTitle import GetCaseTitle
     
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
     
    class InformRobot:
        def __init__(self,url): #webhook地址
            self.url = url
            self.sess = requests.session()
     
        def markdown_robot(self, report_url, principal, failcase):
            data = {
                "msgtype": "markdown",  # 消息类型,此时固定为markdown
                "markdown": {
                    "content": "提醒!线上UI测试计划运行失败 \n" +
                               f"测试报告链接:[{report_url}]({report_url}) \n" +
                               f"负责人:@{principal}  \n"
                               f"失败用例名称:{failcase}"
     
                }
            }
     
            re_post = self.sess.post(self.url, data=json.dumps(data), verify=False)
            print(re_post.content, data)
     
     
    if __name__ == "__main__":
        failcase = GetCaseTitle().get_fail_case_title()  #从GetCaseTitle.py获取执行失败的用例
        if failcase:   #如存在运行失败的用例则发送企业微信通知
            url=sys.argv[1]
            projectname = sys.argv[2]
            principal = sys.argv[3]
            # execute_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
            report_url = "http://172.18.1.1:8080/job/" + projectname + "/ws/log.html"
            InformRobot(url).markdown_robot(report_url, principal, failcase)
        else:
            print("测试通过")

    发送通知的效果如下:

    到此这篇关于python使用jenkins发送企业微信通知的实现的文章就介绍到这了,更多相关python 发送企业微信通知内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • 新手必看docker安装jenkins详细教程
    • 帮你快速上手Jenkins并实现自动化部署
    • Jenkins+Docker持续集成的实现
    • jenkins+gitlab+nginx部署前端应用实现
    • 关于Jenkins + Docker + ASP.NET Core自动化部署的问题(避免踩坑)
    • 基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境的详细教程
    • 使用jenkins一键打包发布vue项目的实现
    • 使用Jenkins Dashboard插件可视化部署的方法
    • 使用jenkins部署springboot项目的方法步骤
    • 关于jenkins插件下载失败的解决方法
    • Windows环境下实现Jenkins部署的教程详解
    • Jenkins系统如何进行数据备份
    上一篇:详细介绍python类及类的用法
    下一篇:python异常的传递知识点总结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python使用jenkins发送企业微信通知的实现 python,使用,jenkins,发送,企业,