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 安装插件

  • 进入系统管理
  • 进入管理插件
  • 搜索插件(Qy Wechat Notification)

安装插件后返回首页

3.2.2 配置Webhook

  • 进入 Jenkins Job
  • 进入 Job 配置
  • 前往构建后的操作 -> 选择企业微信通知

设置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 发送企业微信通知内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用jenkins一键打包发布vue项目的实现

    jenkins的安装 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件. Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立的 Java 程序. 安装 这里的操作系统为WSL Ubuntu,其它系统的安装的请参考jenkins官方文档 wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - sudo sh -c 'echo de

  • 新手必看docker安装jenkins详细教程

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. jenkins基本工作原理 以上为基本工作原理,只是为了开发人员更好的理解画的(个人理解),详情可查看官方文档:https://www.jenkins.io/zh/ 一.jenkins安装 1.查找,下载jenkins镜像文件 启动docker,查找Jenkins镜像文件 docker search jenkins 下载Jenkins镜像文件

  • 使用Jenkins Dashboard插件可视化部署的方法

    使用Jenkins可视化部署 插件地址:https://plugins.jenkins.io/deploy-dashboard/ 插件名称:Deploy Dashboard by Namecheap 您是否曾经问过自己或您的同事"开发环境中当前部署了哪个版本?" 或"昨天将修补程序部署到生产了吗?" 或"我们的客户两天前遇到了一个错误.您还记得当时部署的版本吗?". 如果经常出现诸如此类的问题,并且您使用Jenkins进行其CI / CD处理,那

  • Jenkins系统如何进行数据备份

    要对 Jenkins 系统进行备份,本质上是对 Jenkins 的文件和目录进行备份,如果没有做特殊设置的话也就是 Jenkins 的安装目录 /var/jenkins_home,知道这个原理后就简单了,我们可以写个 Shell 脚本,在脚本中对 Jenkins 目录进行打包存档,然后添加一个系统定时任务,定期执行 Shell 脚本来存档 Jenkins 目录,需要进行恢复的时候就用存档的内容全部覆盖到 Jenkins 目录.还有一种方式就是利用 Jenkins 的备份插件,安装好 Jenkin

  • 关于jenkins插件下载失败的解决方法

    最近在2台电脑上装了jenkins,插件下载时好多失败的,网上找了各种方法,最后找到一个方法可以解决我的问题: 1.插件下载失败截图: 2.可以点击重试,多下载几次,如果多次后仍然不成功,可以跳过,进入jenkins管理界面. 3.修改jenkins插件的下载源地址,点击managejenkins,点击manageplugins 4.点击高级,更改升级站点下的url为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-cente

  • jenkins+gitlab+nginx部署前端应用实现

    相关依赖安装 docker 由于国内安装太慢,所以可以使用 https://docs.docker.com/desktop/ 进行加速下载. 具体的下载过程就不再阐述. 镜像源:"http://hub-mirror.c.163.com" docker安装jenkins # 拉取jenkins镜像 docker pull jenkins/jenkins # 在后台运行一个 名为 jk,对外端口号为3080,链接数据卷为 -/docker/jenkins 的服务 docker run -d

  • 关于Jenkins + Docker + ASP.NET Core自动化部署的问题(避免踩坑)

    本来没想着要写这篇博客,但是在实操过程中,一个是被网络问题搞炸了心态(真心感觉网络能把人搞疯,别人下个包.下个镜像几秒钟搞定,我看着我的几KB小水管真是有苦说不出),另一个就是这里面坑还是有一些的,写出来也是为了让大家避免重复踩坑 几个注意点: 下方shell命令绝大部分都需要管理员权限,所以如果你使用的用户不是root,则都要加上sudo 对于较复杂的命令我都提供了注释版和无注释版,无注释版是为了让你复制起来方便 准备工作 CentOS 7.x Docker Jenkins 一份支持 dock

  • 使用jenkins部署springboot项目的方法步骤

    1.准备工作 1.JDK安装 2.Maven安装 3.Git安装 4.jenkins安装 以上软件安装成功后进入jenkins进行相关配置. 如果需要通过SSH进行远程发布项目,jenkins需要安装 Publish Over SSH 插件 2.全局配置 通过whereis git查找git的安装地址 3.全局配置完成后在进行系统配置 ,如图 4.基础配置完成以后,下面我们来新建一个项目 项目的配置: 5.shell mvn clean package -Dmaven.test.skip=tru

  • Jenkins+Docker持续集成的实现

    目录 一.Jenkins介绍 二.安装部署Jenkins 1. 环境信息 2. 新建Jenkins用户 3. Jenkins安装方式 4. Jenkins授权和访问控制 5. Jenkins系统配置 三.Jenkins构建maven风格的job 1. 新建maven任务 2. 构建任务配置 3. 源码管理配置 4. 构建触发器配置 5. Maven构建设置 四.Jenkins邮件通知设置 1. 配置jenkins自带的邮件功能 2. 安装使用插件Email Extension Plugin 五.

  • 帮你快速上手Jenkins并实现自动化部署

    一.下载与安装 Jenkins的下载可以直接在官网下载,方式还是比较简单的,官网提供了具体的下载和安装的步骤. sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key # 安装 yum install jenkins -y # 启

  • 基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境的详细教程

    环境搭建概述 亲爱的家人们可以到链接:http://xiazai.jb51.net/202105/yuanma/javayaml_jb51.rar  下载所需要的yaml文件. 1.K8S是什么? K8S全称是Kubernetes,是一个全新的基于容器技术的分布式架构领先方案,基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化. 如果我们的系统设计遵循了kubernetes的设计思想,那么传统系统架构中那些和业务没有多大关系的底层代码或功能模块,都可以使用K8S来管

  • Windows环境下实现Jenkins部署的教程详解

    前言 本章主要讲述Windows环境下的Jenkins的自动化部署 关于JenKins下载的方式有两种, 1)直接下载war包,用tomcat/java命令运行 2)msi安装,作为系统服务后台运行 推荐第二种方法很简单: 链接: https://pan.baidu.com/s/1i-qJvoURqTaIKqxoEr170A 提取码: qz6j 我这篇blog主要讲述第一种方法 前提准备工作:安装配置好java环境(关于Java环境自行百度)和Tomcat环境 我这里是jdk1.8和Tomcat

随机推荐