[钉钉通知系列]SVN提交后自动推送消息到钉钉群

钉钉设置机器人配置

1、进入配置机器人入口

534030-20170510141641472-1463063385.png

2、添加机器人

534030-20170510141648894-1542294392.png
534030-20170510141655285-1201849111.png
534030-20170510141703660-1664762849.png
534030-20170510141707738-1480961128.png
534030-20170510141712051-1732970478.png

3、测试WebHook请求

本人使用Postman进行测试
534030-20170510141727191-161113393.png
534030-20170510141732972-9960725.png

4、配置SVN

534030-20170510141743613-2095166683.png
534030-20170510141751988-2107242294.png

4.1 配置 Pre-commit hook

  • 设置提交内容必须包含注释
    534030-20170510141802879-1247628473.png
  • 配置参数
@echo off
setlocal
set REPOS=%1
set TXN=%2
rem check that logmessage contains at least 10 characters
svnlook log %REPOS% -t %TXN% | findstr "....." > nul
if %errorlevel% gtr 0 goto err
exit 0
:err
echo 上传失败!请添加注释. 注释长度至少为5个字符. Commit aborted! 1>&2
exit 1

4.2 配置 Post-commit hook

534030-20170510141815816-981421423.png

set REPOS=%1
set REV=%2
set tttt=%date:~0,10% %time:~0,8%
for /f "tokens=1,2 delims=:" %%a in ('svnlook author -r %REV% %REPOS%') do (
    if not defined AUTHOR set AUTHOR=%%a
)
for /f "tokens=1,2 delims=:" %%a in ('svnlook dirs-changed %REPOS%') do (
    if not defined CHANGEDDIRS set CHANGEDDIRS=%%a
)
for /f "tokens=1,2 delims=:" %%a in ('svnlook log -r %REV% %REPOS%') do (
    if not defined MESSAGE set MESSAGE=%%a
)
set CONTENT="提交时间:%tttt% \n提交版本:%REV% \n作者:%AUTHOR%\n提交备注:%MESSAGE%\n修改目录:%CHANGEDDIRS% "
java -cp D:\svnHook.jar com.wolf.util.Request 钉钉令牌 %CONTENT%

5 配置Java请求文件

由于钉钉提供的接口是https协议,curl需要支持https,因此通过java代码发起Post请求,打包成可运行的jar,然后用post-commit hook调用,传入信息即可。

package com.wolf.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.URL;

import javax.net.ssl.HttpsURLConnection;

public class Request {
    public static void main(String[] args) throws Exception {
        String token = args[0];
        String content = args[1];
        content = "{\"msgtype\": \"text\",\"text\": {\"content\": \""+content+"\"}}";
        httpsRequest("https://oapi.dingtalk.com/robot/send?access_token="+token, "POST", content);
        System.out.println("OK");
        System.exit(0);
    }

    /**
     * 发送https请求
     */
    public static String httpsRequest(String requestUrl, String requestMethod, String outputStr) throws Exception {
        HttpsURLConnection conn = null;
        BufferedReader bufferedReader = null;
        try {
            URL url = new URL(requestUrl);
            conn = (HttpsURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            conn.setRequestMethod(requestMethod);
            conn.setRequestProperty("content-type", "application/json");
            if (null != outputStr) {
                OutputStream outputStream = conn.getOutputStream();
                outputStream.write(outputStr.getBytes("utf-8"));
                outputStream.close();
            }
            bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
            String str = null;
            StringBuffer buffer = new StringBuffer();
            while ((str = bufferedReader.readLine()) != null) {
                buffer.append(str);
            }
            return buffer.toString();
        } catch (Exception e) {
            throw e;
        } finally {
            if (conn != null) {
                conn.disconnect();
            }
            if (bufferedReader != null) {
                try {
                    bufferedReader.close();
                } catch (IOException e) {
                }
            }
        }
    }
}

结果如下:
534030-20170510141831129-255675877.png

转载于:https://www.cnblogs.com/jianxuanbing/p/6835765.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值