Python+Jenkins+企业微信 构建部署实时通知

目录

1、前言

2、思路

3、企业微信操作

4、Jenkins配置

5、代码

6、效果


1、前言

代码部署,需要人为监控,如果是自动部署,没有人监控时,部署情况如何,不得而知,所以我们可以写一个实时部署通知,使用企业微信

2、思路

在企业微信建立一个应用,为接收消息的载体,添加相关人员

在Python中实现得到企业微信应用token,格式化Jenkins消息并发送消息

Jenkins使用Shell命令执行Python代码文件

3、企业微信操作

1、获取企业微信的企业ID

2、创建应用

3、得到AgentId、Secret

进入新建的应用详情页面,可以得到这两个字段

4、Jenkins配置

1、将代码py文件放到jenkins构建工程的workspace的根目录下

2、配置构建执行Shell命令

 

5、代码

全部为Python基础代码,学习起来不难,所以注释不是很多。

json,time,sys是Python基础库,无须下载

需要下载一个requests库,可以在CMD里使用命令:pip install requests  下载

import requests
import json
import time
import sys

#定义时间格式
TIMEFORMAT = "%Y-%m-%d %H:%M:%S"

#得到当前时间
def getNowTime():
    nowtime = time.strftime(TIMEFORMAT, time.localtime(time.time()))
    return nowtime

"""
    企业微信通道
"""
class SendwechatMsg(object):

    def __init__(self):
        """
        初始化企业微信相关权限字段
        注:
        corpid是企业ID,获取路径,登录企业微信官网---我的企业---最底部可寻到
        corpsecret是自建应用的Secret
        agentid是自建应用的AgentId
        这两个参数在 应用管理---自建(新建一个应用)---进入此应用,正文顶部可寻到

        下面三个参数的值是假的,需要去企业微信获取真实参数
        """
        self.corpid = 'wwa1sdfsdkk4fc7457'
        self.corpsecret = 'cwerwhn-Sq54__ISKDFiewowfwie0__Xj9fBiiejfiweowNYE'
        self.agentid = '1000021'


    def getToken(self):
        """
        获取企企业微信应该的token
        """
        if self.corpid is None or self.corpsecret is None:
            return False, '企业微信相关信息未配置'
        url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid='+ self.corpid +'&corpsecret='+ self.corpsecret
        response = requests.get(url)
        res = response.json()
        self.token = res['access_token']
        return True, '企业微信token获取成功'

    def sendMsg(self, msg):
        """
        发送消息方法
        msg:需要发送的消息
        """
        _isOK, result = self.getToken()
        if _isOK:
            url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + self.token
            jsonmsg = {
                   "touser" : "@all",
                   "msgtype" : "text",
                   "agentid" : self.agentid,
                   "text" : {
                       "content" : msg
                   },
                   "safe":0
                }
            data = (bytes(json.dumps(jsonmsg), 'utf-8'))
            requests.post(url, data, verify=False)
        else:
            print(result)


"""
    Jenkins消息格式化
"""
class Jenkins(object):
    def __init__(self):
        """
        初始化微信消息通道
        """
        self.wechatMsg = SendwechatMsg()


    def sendmessage(self, title, job_name, branch, build_url, build_status):
        """
            格式化消息格式
        """
        message = """
{}
---------------------------------
构建信息
---------------------------------
{}
---------------------------------
状态:{}
任务名:{}
分支名:{}
构建日志:{}console   
---------------------------------  
        """.format(title, getNowTime(), build_status, job_name, branch, build_url, build_url)
        self.wechatMsg.sendMsg(message)

def call_jenkins(argv):
    """
         发送jenkins编译消息给企业微信
         参数:
                    title 提醒标题
                    jobname:Jenins任务名
                    branch: git分支
                    build_url: Jenins编译的url地址
                    build_status: 构建的状态
    """
    job_name = argv[2]
    branch = argv[3]
    build_url = argv[4]
    build_status = argv[5]
    jenkins = Jenkins()
    jenkins.sendmessage('---Jenkins 构建提醒----', job_name, branch, build_url, build_status)


if __name__ == "__main__":
    """
        sys.argv获取命令中的参数list
    """
    if len(sys.argv) > 1:
        print(sys.argv)
        if sys.argv[1] == 'jenkins':
            print('--- jenkins')
            call_jenkins(sys.argv)
    else:
        print('usage:')
        print('测试Jenkins的命令“   python messagetoWechat.py jenkins ${JOB_NAME} ${GIT_BRANCH}  ${BUILD_URL} 构建成功')

6、效果

见下图

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魂尾ac

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值