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

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