簡介
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介紹:






