Jenkins使⽤微信、钉钉、邮件通知

Jenkins使⽤微信、钉钉、邮件通知

Deng YongJie's blog 1,176 2022-07-17

第1章 Jenkins使⽤微信发送结果通知

1.登陆微信企业公众号

登陆并填写注册信息:

https://work.weixin.qq.com/wework_admin/loginpage_wx

2.创建新应⽤

3.填写应⽤详细信息

上传logo,填写应⽤名称 ,应⽤介绍等
image-1676455996886

4.查看并记录相关信息

创建应⽤之后会⽣成⼏个信息需要我们记录⼀下,因为⼀会会⽤到

1.Agentid
2.Secret
3.企业ID
4.⽤户账号

image-1676456012167

5.测试发送消息

接下来我们来测试⼀下接⼝调⽤是否正常,测试地址:

http://work.weixin.qq.com/api/devtools/devtool.php

image-1676456042133

6.修改weixin发送消息脚本

修改脚本⾥的企业ID,Secret,AgentID信息为⾃⼰的:

cat >/scripts/jenkins/jenkins_notify.py <<'EOF'
#!/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/message/send?access_token=%s" %
Token
 data = {
 # 接收通知的⽤户账号,多个⽤逗号隔开
 "touser" : "YongJie",
 "msgtype" : "text",
 # ⾃⼰的AgentId
 "agentid" : 1000009,
 "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 += "⽆变更"
 return str1
 except Exception as e:
 str1 += str(e)
if __name__ == '__main__':
 # 企业 ID
 Corpid = "wwd2xxxxxx7efa"
 # Secret
 Secret = "0yf0x_KuQi1IfGkI__xxxxxxxxx"
 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
EOF

7.安装python脚本需要的依赖

yum install python-pip -y
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

8.配置Jenkins项⽬的构建环境

image-1676456054229

参数解释:

%3$s(at %4$s via %1$s) :
参数分别为:Change Log,时间,提交⼈
yyyy-MM-dd HH:mm:ss:
时间格式 年-⽉-⽇ ⼩时:分钟:秒

插件安装⽅式:

Add Changelog Information to Environment 选项是需要插件⽀持的
如果没有选项,需要⾃⼰去github下载插件然后编译拷⻉到jenkins插件⽬录下,项⽬地址:
https://github.com/daniel-beck/changelog-environment-plugin
解压进⼊⽬录,执⾏mvn verify命令
执⾏完会在changelog-environment-plugin-master/target/下⽣成⼀个changelogenvironment.hpi⽂件
上传到jenkins的插件⽬录下重启后即可使⽤。

9.添加构建后操作

image-1676456067948

执⾏内容:

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

插件解释:

上述操作需要两个插件的⽀持:
changelog:提供SCM_CHANGELOG;
Hudson Post build task:提供 Post build task;

10.提交变更查看信息

此时我们如果提交新的代码,就会触发jenkins执⾏操作,然后将结果通过微信发送到⼿机上
image-1676456079700

第2章 更优雅的微信发送⽅式

1.安装插件

Qy Wechat Notification

2.申请微信群机器⼈

3.配置参数

第3章 Jenkins使⽤钉钉发消息

1.jenkins配置钉钉

钉钉的使⽤⾮常简单,只需要安装dingding的插件,然后勾选上通知内容即可。
image-1676456091826

2.查看效果

image-1676456102527

第3章 邮件通知