简介
Jenkins是持续化集成的一个核心部件,它上游从仓库(gitlab)等拉取代码,经编译构建,将应用发布至下游目标环境;构建结果通知的方式有很多,现成的插件有邮件和钉钉方式,但是就方便的角度,通过QQ、Wechat发送构建结果到工作群中;本文将该功能(QQ机器人通知)的实现分享出来,希望对有需要的朋友有所帮助.
1. QQ机器人安装
1.1. 安装Docker
yum -y install docker
1.2. 从官方仓库直接拉取
docker pull sjdy521/mojo-webqq
(拉取微信镜像:docker pull sjdy521/mojo-webqq)
1.3. 运行镜像
docker run -d -it -p 80:5000 --name webqq docker.io/sjdy521/mojo-webqq
(微信机器人开启方式:docker run -d -it --env MOJO_WEIXIN_LOG_ENCODING=utf8 -p 81:3000 --name wechat sjdy521/mojo-weixin)
后台运行,将容器内5000端口映射为本机80,并将其命名为webqq
1.4. 查看docker日志
docker logs webqq -f
(微信机器人查看日志:docker logs wechat -f)
打开链接地址,扫描二维码登陆
1.5. 查看QQ接口文档
例如:通过http://192.168.30.28/openqq/get_group_basic_info来获取信息;
通过http://192.168.30.28/openqq/send_group_message?name=DEMO&content=hello来向DEMO群发送群消息;
具体可参考官方文档https://github.com/sjdy521/Mojo-Webqq/blob/master/API.md.
2. 编写发送Job构建状态的shell脚本
[root@localhost file]# cat webqq.sh
#!/bin/bash#获取Jenkins Job API, --user 添加jenkins管理员用户和token, 用户→用户id→设置页面中查看
curl -s -o .temp.xml "$JENKINS_URL/job/$JOB_NAME/$BUILD_NUMBER/api/xml" --user ops:41f0b3db7f15298cc156e04f2fae59 >/dev/null#需要先安装xml2工具,yum -y install xml2
action=`cat .temp.xml | xml2 | grep /freeStyleBuild/action/cause/shortDescription= | awk -F= '{print $2}'`#获取job的build状态
build_status=`cat .temp.xml | xml2 | grep /freeStyleBuild/result= | awk -F= '{print $2}'`developer=`cat .temp.xml | xml2 | grep /freeStyleBuild/culprit/fullName= | awk -F= '{print $2}'`#发送群消息
##qq发送方式
curl -d "name=DEMO&content=Job: $BUILD_URL/console | Action: $action | Developer: $developer | Status: $build_status | Jenkins." http://qq.htrader.cn/openqq/send_group_message
##wechat发送方式
#curl -d "displayname=DEMO&content=Job: $JOB_URL | Operator: $operate_user | Status: $build_status | Jenkins." http://wechat.glinux.top:81/openwx/send_group_message##清理现场
rm -rf .temp.xml .groupinfojson
Jenkins Job构建后生成的api
3. Jenkins 配置Post build task插件
插件安装完毕效果如图,在构建后操作中可以添加该插件,填写shell脚本位置。
4. 告警发送效果展示
5. 参考文档
- QQ机器人Docker镜像安装及使用方法: https://github.com/sjdy521/Mojo-Webqq/blob/master/Docker.md
- QQ机器人API文档:https://github.com/sjdy521/Mojo-Webqq/blob/master/API.md
- Wechat机器人Docker镜像安装及使用方法: https://github.com/sjdy521/Mojo-Weixin/blob/master/Docker.md
- Wechat机器人API文档:https://github.com/sjdy521/Mojo-Weixin/blob/master/API.md
- XML包含另一个XML:http://www.cnblogs.com/feiling/archive/2013/04/01/2994131.html
- XML处理工具:https://blog.mythsman.com/2017/10/15/1/
- Shell中Json处理工具jq介绍:
- https://www.ibm.com/developerworks/cn/linux/1612_chengg_jq/index.html
- https://stedolan.github.io/jq/manual/