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来发送群消息,会存在各种问题。

  1. 消息延迟
    SVN提交完通过访问Jenkins的构建Trigger来发送飞书信息,这样转交一手是没有必要的。而且如果你设置了构建的SVN代码拉取,那还要等代码拉取结束才发消息。

  2. 设置步骤麻烦
    除了在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提交更新飞书群通知 (飞书机器人)相关推荐

  1. Python使用飞书群机器人发送消息

    原创文|Space9 机器人简单介绍 飞书群中的自定义机器人是通过webhook的形式将你要发送的消息即时发送到群聊中 在群聊中添加机器人 进入群聊,打开群设置,找到群机器人,并点击添加机器人.选择C ...

  2. 在飞书群里设置机器人提醒 github 代码更新

    几年前用钉钉的时候,只需要几分钟的设置就可以添加一个 github 机器人,然后 代码仓库更新之后,钉钉群里就会收到一条提醒,我以为飞书也是这样. 但是在飞书群添加自定义机器人之后,我把 webhoo ...

  3. Jenkins的构建结果通知到飞书群

    首先需要Post Build Task插件,在构建后操作里选择它,然后写入下方shell代码 #!/bin/bash JOB_URL="${JENKINS_URL}job/${JOB_NAM ...

  4. 飞书群聊机器人每日自动推送语录及风景照片python版

    飞书群聊机器人自动推送消息 使用场景 推送机制 代码目录 代码详解 获取图片 获取有效token 上传图片并得到Image_Key 使用 完整代码 使用场景 最近使用飞书聊天,觉得蛮好用的,刚好这段时 ...

  5. RPA工具实现飞书群聊自动发送信息,我终于也有了自己的机器人

    一.RPA究竟是个啥? 首先,他的全称是:Robotic Process Automation,嫌太长,我们三个单词拆开看看: Robotic:软件机器人,不是物理上能走能动的机器人哦,而是一款软件产 ...

  6. 配置Hi提醒实现股票行情监测信息推送到飞书群机器人消息教程

    通过配置Hi提醒通道完成后可推送信息至你的飞书群中,一次配置持久使用. 一.创建飞书机器人: 1.登录飞书PC端,选择群 首先选择需要增加机器人的群,在窗口右侧点击[设置]图标弹出菜单 点击窗口中的[ ...

  7. 往飞书群推送告警信息并实现@特定人

    往飞书群推送告警信息并实现@特定人 一.飞书群添加告警机器人 1.选择群机器人 2.添加群机器人 3.添加自定义机器人 4.自定义webhook和告警关键词 5.飞书群成功添加机器人 二.通过代码往飞 ...

  8. SVN:更新、同步与提交 PS:被锁定之解决方法

    Athor:justinchinawzEmail:justinchinawz@163.comQQ:1787580636 Source article:http://www.cnblogs.com/ju ...

  9. 解决SVN提交和更新代码冲突?

    解决SVN提交和更新代码冲突? 解决冲突有三种选择: 1.放弃自己的更新,使用svn revert(回滚),然后提交.在这种方式下不需要使用svn resolved(解决) 2.放弃自己的更新,使用别 ...

最新文章

  1. 计算机网页基础课专业,关于《计算机应用基础》课程网页下的学习资源使用说明....
  2. Android-ConvenientBanner轻松实现广告头效果
  3. NodeList 和 HTMLCollection
  4. 《转》java URL重写
  5. hibernate插入Mysql数据库出现中文乱码情况从这5个方面解决
  6. android大疆飞控界面,DJI Android SDK 开发笔记(入门篇)
  7. Vue-router VUE路由系统
  8. .net Framework各个版本之间的发展
  9. java的connect和http_【JAVA】通过URLConnection/HttpURLConnection发送HTTP请求的方法
  10. Cannot load driver ‘C:\Keil_v5\ARM\Segger\JL2CM3.dll 报错解决方法。
  11. Flash Builder 4.7安装破解教程详解(图文)
  12. 移动端实现HTML5 mp3录音踩坑指南:系统播放音量变小、一些机型录音断断续续 之 MediaRecorder和AudioWorklet的终极对决
  13. 一级计算机wps都考些什么,计算机一级WPS考什么内容
  14. matlab 矩阵位移法编程 结构力学,matlab-矩阵位移法编程-结构力学
  15. c语言 数组 常数,在c中创建一个常数数组
  16. PHP 屏幕亮度,笔记本电脑亮度怎么调节
  17. 【论文阅读】KLD模型
  18. Numpy学习1:dtype、ndim、astype和shape
  19. Linux如何设置开机自启动
  20. 数字藏品叠加元宇宙热潮,数字艺术会迎来怎样的发展

热门文章

  1. 2023财年Q4业绩继续下滑,ChatGPT能驱动英伟达重回巅峰吗?
  2. 3D数学之方位与角位移、欧拉角与四元数
  3. Pytorch 学习 (一)Minst手写数字识别(含特定函数解析)
  4. 【木、碎生活】青春不朽
  5. 单片微型计算机原理及应用ppt,(精品完整版)单片微型计算机原理及应用.ppt...
  6. ci框架 乱码 mysql_mysql设置utf8_unicode_ci字符集php页面输出??乱码的解决方法
  7. Vue详解及综合案例
  8. MATLAB深度学习(1) --- 想要做好深度学习?数据集是第一步
  9. Java工具类:HttpUtil(HttpClient实现http的请求,获取响应)
  10. mysql怎么替换部分字符串