51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

jenkins 集成企业微信

jenkins 集成企业微信

jenkins集成微信,工作中档git有新代码提交会触发钩子自动完成上线,运维和开发人员不须时刻盯着jenkins,通过微信的方式显示给运维和开发人员

第一步: 注册企业微信

详细的步骤我写在了这里:python企业微信发消息配置详细步骤(企业微信注册)

第2步: 配置 jenkins

1.由于jenkins没有官网的插件来完成此功能,所以我们只能用网络上一些开源的插件

这个插件,我已经放到了这里里边, 之前安装过的 ,不用再考虑:

sonarqube: https://url69.ctfile.com/d/253469-56156284-4dfae7?p=2206 (访问密码: 2206)

github下载代码
https://github.com/daniel-beck/changelog-environment-plugin
解压到某个目录-》进入目录执行以下操作
cd 到 changelog-environment-plugin-master 下,执行
mvn verify
时间较长,会在changelog-environment-plugin-master/target/下有个changelog-environment.hpi文件,上传到jenkins即可使用

因为发送消息 需要python 环境的支持, request 模块是需要的。

接下来,我们先配置环境:

安装 python 的 request 模块,可以参考:https://www.baimeidashu.com/8976.html

2.配置jenkins

jenkins进入到项目中->构建环境多了Add Changelog Information to Environment->点击选择

Entry Format中添加 %3$s(at %4$s via %1$s),参数分别为ChangeLog内容,时间,提交人。
Date Format中添加 yyyy-MM-dd HH:mm:ss 就是时间格式。

然后我们找到 构建后 操作步骤:

echo "==========Start Notify=============="
echo ${SCM_CHANGELOG} > /tmp/${JOB_NAME}_change.log
python /server/scripts/jenkins_notify.py ${BUILD_URL} /tmp/${JOB_NAME}_change.log ${JOB_NAME}
rm -fv /tmp/${JOB_NAME}_change.log

我们修改以下脚本:

/server/scripts/jenkins_notify.py

这个脚本下载连接在:

jenkins: https://url69.ctfile.com/d/253469-56119882-b655a5?p=2206 (访问密码: 2206)

我们需要在201 jenkins服务器上创建目录, 并且把jenkins_notify.py 文件上传上去。

jenkins_notify.py 这个文件,我们需要修改 4个地方:就是我们在注册企业微信的时候建立的 uid等, 详细的可以看文章的的第一步操作

修改完后, 赋执行权限

chmod +x /server/scripts/jenkins_notify.py

点击"立即构建' 在执行日志种找到 命令

之后我们先手动的 测试以下能否正常发送 消息:

python /server/scripts/jenkins_notify.py http://10.0.0.201:8080/job/free-jbo/19/ /tmp/free-jbo_change.log free-jbo

这个时候 企业微信会收到消息

但是在 jenkins 点击立即构建,就没有收到消息,

这个有点头疼???

这个问题先留着吧。


#!/usr/bin/python2.7
#_*_coding:utf-8 _*_
 
 
import requests,sys,json
import urllib3
urllib3.disable_warnings()
 
reload(sys)
sys.setdefaultencoding('utf-8')
 
def GetToken(Corpid,Secret):
    Url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
    Data = {
        "corpid":Corpid,
        "corpsecret":Secret
    }
    r = requests.get(url=Url,params=Data,verify=False)
    Token = r.json()['access_token']
    return Token
 
def SendMessage(Token,Subject,Content, ProName):
    #Url = "https://qyapi.weixin.qq.com/cgi-bin/appchat/send?access_token=%s" % Token
    Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
    #Data = {
    #    "chatid": "JenkinsAlarm",  # 此处不明白请参考企业微信官网
    #    "msgtype": "text",
    #    "text": {
    #        "content": "[项目名称] : " + ProName + '\n' + "[项目地址] : " + Subject + '\n' + Content + '\n'
    #    },
    #    "safe": "0"
    #}
    data = {
        "touser" : "baimeidashu",
        "msgtype" : "text",
        "agentid" : 1000002,
        "text" : {
           "content" : "[项目名称] : " + ProName + '\n' + "[项目地址] : " + Subject + '\n' + 
Content + '\n'
        },
        "safe":0
    }
    r = requests.post(url=Url,data=json.dumps(data),verify=False)
    return r.text
 
def action_from_file(filename):
    try:
        str1 = '[变更日志] : '
        with open(filename, 'r') as f:
            for i in f.readlines():
                str1 += i
		print str1
        if len(str1) == 17:
            str1 += " 无变更"
	# print str1
        return str1
    except Exception as e:
        #print('[ERROR] {0}'.format(e))
	str1 += str(e)
 
 
if __name__ == '__main__':
    Corpid = "wwa95c9738129a5c8e"
    Secret = "q7Q7IfUOKDWs0WXnN0IF6vESqBpxpV6opVyuSKUxexY"
 
    Subject = sys.argv[1]
    Content = action_from_file(sys.argv[2])
    ProName = sys.argv[3]
 
    Token = GetToken(Corpid, Secret)
    Status = SendMessage(Token,Subject,Content,ProName)
    print Status

欢迎来撩 :shell 编程从0到1

欢迎来撩 :devops cicd持续集成全程(汇总)

欢迎来撩 :汇总all

赞(4)
未经允许不得转载:工具盒子 » jenkins 集成企业微信