利用svn钩子和bat脚本发送钉钉消息通知

394 阅读1分钟

1. 钉钉添加机器人

添加自定义机器人
钉钉自定义机器人接入文档

机器人管理.png

Webhook地址

后面bat需要用到。 Webhook.png

安全设置

添加自定义关键词,我这边的关键词是SVN 安全设置.png

2. bat脚本

@echo off
title  After SVN Committed Send Message To Dingtalk(%~dp0) 
svn update
setlocal EnableDelayedExpansion
set "str=&"
set "Hello="
@REM for /f "delims=|" %%a in (.\svnNotifyDingTlakTemp.log) do (
for /f "delims=|" %%a in ('svn log -l 1 -v') do (
  set "line=%%a"
  set "Hello=!Hello!\n!line:%str%=!"
)

set DingUrl=您的机器人Webhook地址
@REM curl -X POST %DingUrl% -H "Content-Type: application/json" -d "{\"msgtype\": \"text\", \"text\": { \"content\": \"SVN Commit Info: %Hello% \" }}"

set "SvnUserName="
for /f "delims=: tokens=2" %%a in ('svn auth ^| findstr Username') do (
  set "line2=%%a"
  set "SvnUserName=!SvnUserName!\t!line2!"
)

curl -X POST %DingUrl% -H "Content-Type: application/json" -d "{\"msgtype\": \"text\", \"text\": { \"content\": \"SVN Commit Info From %SvnUserName%: %Hello% \" }}"


@REM timeout /t 10
@REM pause>nul

实现起来遇到太多坑,这个脚本是可以使用的。

setlocal EnableDelayedExpansion 设置本地未延迟扩展,否则for /f读取的只有一行可以赋值
钉钉推送的时候,使用关键字过滤会比secert加密简单很多
curl post请求json换行的问题
&字符串的问题

3.SVN钩子

设置 - 钩子脚本 - 新增

image.png

image.png

4.效果

image.png

参考链接: