SVN提交更新飞书群通知 (飞书机器人)
Jenkins发送飞书信息
2022.9.16更新 用python脚本
效果
步骤
1.修改 svn/hooks/post-commit 脚本。
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8REPOS="$1"
REV="$2"python3 /home/svn/pub.py "$REV" "$REPOS"
2.添加python发送脚本
import sys
import requests
import subprocess#定义python系统变量
REV = sys.argv[1]SVNURL = sys.argv[2]
print(SVNURL)
result = subprocess.run(['svnlook','author','-r',REV,SVNURL], stdout=subprocess.PIPE)
author = result.stdout.decode('utf-8')result = subprocess.run(['svnlook','date','-r',REV,SVNURL], stdout=subprocess.PIPE)
timeStr = result.stdout.decode('utf-8')
timeNow = timeStr.split('+')[0]result = subprocess.run(['svnlook','log','-r',REV,SVNURL], stdout=subprocess.PIPE)
message = result.stdout.decode('utf-8')result = subprocess.run(['svnlook','changed','-r',REV,SVNURL], stdout=subprocess.PIPE)
changed = result.stdout.decode('utf-8')if(len(changed)>1000):changed = changed[0:1000]changed += "..."with open('/home/svn/log.txt', 'a+') as f:print(message,file=f)# 飞书机器人的webhook地址
url = ' https://open.feishu.cn/open-apis/bot/v2/hook/****'
method = 'post'
headers = {'Content-Type':'application/json'}
content=["** 提交人:**","** 提交时间:**\n","**️ 版本:**","** 日志:**\n","**修改文件:**\n"]data = {"msg_type": "interactive","card": {"config": {"wide_screen_mode": True,"enable_forward": True},"elements": [{"fields": [{"is_short": True,"text": {"content": content[0]+author+content[2]+REV,"tag": "lark_md"}},{"is_short": True,"text": {"content": content[1]+timeNow,"tag": "lark_md"}},{"is_short": False,"text": {"content": "","tag": "lark_md"}},{"is_short": False,"text": {"content": content[3]+message,"tag": "lark_md"}},{"is_short": False,"text": {"content": "","tag": "lark_md"}},{"is_short": False,"text": {"content": content[4]+changed,"tag": "lark_md"}}],"tag": "div"},{"tag": "hr"},{"elements": [{"content": "✅ ManJia Net 技术支持","tag": "plain_text"}],"tag": "note"}],"header": {"template": "ding","title": {"content": "【SVN更新通知】", # 卡片名称"tag": "plain_text"}}}
}
res= requests.request(method=method,url=url,headers=headers,json=data)
print(res.json())
环境:
1.安装python3
2. 添加脚本运行权限 chmod +x post-commit
3. 如果是用http协议修改用户组为apache chown -R apache:apache /home/svn/pub.sh
=======================================================
以下为旧答案 用shell脚本实现 原理是一样的
目前网上大部分的飞书群通知都是基于Jenkins的构建信息,发送群通知。其实很多时候,我们项目组只需要在有成员提交代码的时候通知大家。
即SVN提交就通过飞书机器人来发群消息。
如果是通过Jenkins来发送群消息,会存在各种问题。
消息延迟
SVN提交完通过访问Jenkins的构建Trigger来发送飞书信息,这样转交一手是没有必要的。而且如果你设置了构建的SVN代码拉取,那还要等代码拉取结束才发消息。设置步骤麻烦
除了在svn放置钩子,还要设置Jenkins的Token URL。
当然如果是要做构建之后的消息推送,Jenkins是必要的。
SVN直接发送飞书群消息
Hook脚本
在svn的项目目录hook底下,重写post-commit脚本。此脚本会在svn代码提交之后被触发。hook底下也有样例脚本,即tmpl。脚本中可以取到的参数都做了说明。可以获得两个参数,svn项目路径和提交的版本。
位置:
/home/svn/hooks/post-commit.sh
代码如下:
#!/bin/sh# POST-COMMIT HOOK
REPOS="$1"
REV="$2"
/home/svn/pub.sh "$REV" "$REPOS"
添加运行权限:
chmode +x post-commit.sh
可以直接在这里写脚本,但是我将逻辑单独抽离出来,这样子其他需要做推送的地方,只要调用一下这个脚本即可,方便后期做统一的维护和更新。代码也显得比较简洁。
推送脚本:
位置
/home/svn/pub.sh
代码如下:
#!/bin/bashexport LANG=en_US.UTF-8
# 仓库的路径
REPOS=$2
# 新提交的版本号
REV=$1
# 钩子脚本的日志SVNLOOK=/usr/bin/svnlook
##
TIME=$(date "+%Y-%m-%d %H:%M:%S")
# 提交作者
AUTHOR=$($SVNLOOK author -r $REV "$REPOS")
# 修改的目录集合
CHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS)
# 提交时的备注信息,不建议用中文,中文测试也可OK
MESSAGE=$($SVNLOOK log -r $REV "$REPOS")curl -X POST -H "Content-Type: application/json" \-d '{"msg_type":"interactive","card": {"config": {"wide_screen_mode": true,"enable_forward": true},"i18n_elements": {"zh_cn": [{"fields": [{"is_short": true,"text": {"content": "'"**
SVN提交更新飞书群通知 (飞书机器人)相关推荐
- Python使用飞书群机器人发送消息
原创文|Space9 机器人简单介绍 飞书群中的自定义机器人是通过webhook的形式将你要发送的消息即时发送到群聊中 在群聊中添加机器人 进入群聊,打开群设置,找到群机器人,并点击添加机器人.选择C ...
- 在飞书群里设置机器人提醒 github 代码更新
几年前用钉钉的时候,只需要几分钟的设置就可以添加一个 github 机器人,然后 代码仓库更新之后,钉钉群里就会收到一条提醒,我以为飞书也是这样. 但是在飞书群添加自定义机器人之后,我把 webhoo ...
- Jenkins的构建结果通知到飞书群
首先需要Post Build Task插件,在构建后操作里选择它,然后写入下方shell代码 #!/bin/bash JOB_URL="${JENKINS_URL}job/${JOB_NAM ...
- 飞书群聊机器人每日自动推送语录及风景照片python版
飞书群聊机器人自动推送消息 使用场景 推送机制 代码目录 代码详解 获取图片 获取有效token 上传图片并得到Image_Key 使用 完整代码 使用场景 最近使用飞书聊天,觉得蛮好用的,刚好这段时 ...
- RPA工具实现飞书群聊自动发送信息,我终于也有了自己的机器人
一.RPA究竟是个啥? 首先,他的全称是:Robotic Process Automation,嫌太长,我们三个单词拆开看看: Robotic:软件机器人,不是物理上能走能动的机器人哦,而是一款软件产 ...
- 配置Hi提醒实现股票行情监测信息推送到飞书群机器人消息教程
通过配置Hi提醒通道完成后可推送信息至你的飞书群中,一次配置持久使用. 一.创建飞书机器人: 1.登录飞书PC端,选择群 首先选择需要增加机器人的群,在窗口右侧点击[设置]图标弹出菜单 点击窗口中的[ ...
- 往飞书群推送告警信息并实现@特定人
往飞书群推送告警信息并实现@特定人 一.飞书群添加告警机器人 1.选择群机器人 2.添加群机器人 3.添加自定义机器人 4.自定义webhook和告警关键词 5.飞书群成功添加机器人 二.通过代码往飞 ...
- SVN:更新、同步与提交 PS:被锁定之解决方法
Athor:justinchinawzEmail:justinchinawz@163.comQQ:1787580636 Source article:http://www.cnblogs.com/ju ...
- 解决SVN提交和更新代码冲突?
解决SVN提交和更新代码冲突? 解决冲突有三种选择: 1.放弃自己的更新,使用svn revert(回滚),然后提交.在这种方式下不需要使用svn resolved(解决) 2.放弃自己的更新,使用别 ...
最新文章
- 计算机网页基础课专业,关于《计算机应用基础》课程网页下的学习资源使用说明....
- Android-ConvenientBanner轻松实现广告头效果
- NodeList 和 HTMLCollection
- 《转》java URL重写
- hibernate插入Mysql数据库出现中文乱码情况从这5个方面解决
- android大疆飞控界面,DJI Android SDK 开发笔记(入门篇)
- Vue-router VUE路由系统
- .net Framework各个版本之间的发展
- java的connect和http_【JAVA】通过URLConnection/HttpURLConnection发送HTTP请求的方法
- Cannot load driver ‘C:\Keil_v5\ARM\Segger\JL2CM3.dll 报错解决方法。
- Flash Builder 4.7安装破解教程详解(图文)
- 移动端实现HTML5 mp3录音踩坑指南:系统播放音量变小、一些机型录音断断续续 之 MediaRecorder和AudioWorklet的终极对决
- 一级计算机wps都考些什么,计算机一级WPS考什么内容
- matlab 矩阵位移法编程 结构力学,matlab-矩阵位移法编程-结构力学
- c语言 数组 常数,在c中创建一个常数数组
- PHP 屏幕亮度,笔记本电脑亮度怎么调节
- 【论文阅读】KLD模型
- Numpy学习1:dtype、ndim、astype和shape
- Linux如何设置开机自启动
- 数字藏品叠加元宇宙热潮,数字艺术会迎来怎样的发展
热门文章
- 2023财年Q4业绩继续下滑,ChatGPT能驱动英伟达重回巅峰吗?
- 3D数学之方位与角位移、欧拉角与四元数
- Pytorch 学习 (一)Minst手写数字识别(含特定函数解析)
- 【木、碎生活】青春不朽
- 单片微型计算机原理及应用ppt,(精品完整版)单片微型计算机原理及应用.ppt...
- ci框架 乱码 mysql_mysql设置utf8_unicode_ci字符集php页面输出??乱码的解决方法
- Vue详解及综合案例
- MATLAB深度学习(1) --- 想要做好深度学习?数据集是第一步
- Java工具类:HttpUtil(HttpClient实现http的请求,获取响应)
- mysql怎么替换部分字符串