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