Python脚本发送信息及附件至企业微信

#coding=utf-8
import requests
import json
import urllib
#import urllib.error
import time
import urllib3
import re
import sys
jobname=sys.argv[1]
# 获取构建结果
a="--select--"
def getProName():
    fname = pathGitLab
    with open(fname, 'r') as f:
        s = f.read()
        urls = re.findall(r'http://IP/[a-zA-Z0-9._/\-:]*@[A-Z0-9]*', s)  # 用正则获取svn路径的url
        f.closed
        if urls == []:
            urls = re.findall(r'http://IP/[a-zA-Z0-9._/\-:]*', s)

            if urls == []:
                urls = re.findall(r'IP2[a-zA-Z0-9._/\-:]*.git', s)
                print(urls)
                branchs = re.findall(r'\(refs/remotes/origin/[a-zA-Z0-9._/\-:]*\)', s)
                print (branchs)
                B = branchs[0].split("/origin/")
                print (B)
                branchs0=B[-1]
                B1=branchs0.split(")")
                branch = B1[0]
                print (branch)
                branch = "/branches/"+branch
                url=urls[0].replace(".git",branch)
                print (url)
            else:
                url = urls[0]  # 取第一个url
        else:
            url = urls[0]  # 取第一个url

        #print urls

        print (url)
        L = url.split("/branches/")#以branches作为分割点,得到分支
        print (L)
        a = L[0]
        branch=L[-1]
        print(branch)
        L1 = a.split('/')#以/分割得到项目名
        prj = L1[-1]
        if prj=="source":
            prj=L1[-2]
            if prj=="BMS" or prj=="MPS":
                prj = L1[-3]+L1[-2]
        elif prj=="BMS" or prj=="MPS":
            pb=L1[-2].split(':')
            prj = pb[-1]+L1[-1]
        print (prj)
        return prj,branch
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
        elif 'SUCCESS' in last_line.decode():
            return 0

        else:

            return 2


# 获取下一次构建的Number和当前构建的number

def getNextNumber(jobname):

    f = open(r'/data/jenkins/jobs/%s/nextBuildNumber'% jobname, 'r')

    currentNumber = int(f.read()) - 1

    return currentNumber


# 网络模块,用于企业微信发送信息

def jenkins(result,proname,branch,jobname,jobnum):
    url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=5eac'
    # 企业微信机器人的webhook

    if result == 1:
        con = {"msgtype": "text",
               "text": {"content": "项目部署提醒\r\n部署项目名及分支:%s,%s\r\n部署结果:FAILURE\r\n部署失败,请查看Jenkins部署具体日志!\r\nhttp://ip3jenkins地址/job/%s/%s/console"% (proname,branch,jobname,jobnum)}, }
    elif result == 0:
        con = {"msgtype": "text",
               "text": {"content": "项目部署提醒\r\n部署项目名及分支:%s,%s\r\n部署结果:SUCCESS\r\n部署成功!"% (proname,branch)}, }
    else :
        con={"msgtype": "text","text": {"content":"项目部署提醒\r\n部署项目名及分支: %s,%s\r\n部署结果:UNSTABLE\r\n部署失败,请查看Jenkins部署具体日志!\r\nip3jenkins地址/job/%s/%s/console"% (proname,branch,jobname,jobnum)}, }

    jd = json.dumps(con).encode('utf-8')
    print (jd)
    req=urllib3.Request(url, jd)
    #req = urllib.request.Request(url, jd)

    req.add_header('Content-Type', 'application/json')
    response = urllib3.urlopen(req)


if __name__ == '__main__':
    jobCurrentNumber = getNextNumber(jobname)  # 获取当前构建number
    print (jobCurrentNumber)

    # 获取当前构建的目录比如D:\Jenkins\jobs\gk_check\builds\153,
    path = "/data/jenkins/jobs/%s/builds/" % jobname + str(jobCurrentNumber) + "/"
#
    pathGitLab = path + "log"  # 获取构建日志的路径
    #pathGitLab = "E:\\Lkc\\log"

    pathAuthor = path + "changelog.xml"  # 获取递交者信息的文件路径

    tup=getProName()
    proname=tup[0]
    print (proname)
    branch=tup[1]
    print (branch)
    result = getResult()  # 读取构建结果
    print (result)

    jenkins(result,proname,branch,jobname,str(jobCurrentNumber))  # 最后执行函数
    getResult()

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值