Azure DevOps (二) 實現Git倉庫和釘釘的聯動

上一篇文章中我們提到了azure為我們提供了可自定的web hook,於是我打算實踐一下

我假設了一種場景就是,我希望我可以及時收到團隊中所有開發人員的代碼提交記錄,於是乎我想通過web hook打通釘釘的通知,每次有人提交代碼的時候釘釘都會發一條消息到開發人員的群里,讓大家都知道,誰剛剛提交了代碼。(比如在座的各位卷王,希望我周六日提交了代碼可以及時被領導看見~)

首先,我們要先在釘釘新建一個通知機械人用來發送通知。

打開釘釘的一個群聊,在管理選項中選擇群助手,創建一個自定義機械人

 

然後我們需要配置一下機械人的一些選項,驗證配置中建議用一個就是關鍵字認證,只有你發的消息里又這個關鍵詞釘釘機械人才會發送這條消息,同時釘釘會生成一個請求的URL

這個請求上帶着一個token,是用來區分機械人的,這個要保存好,請求的時候直接請求這個鏈接就可以,非常簡單。

 

 創建好釘釘機械人之後,我們需要自己寫一個簡單的web應用來接受azure的消息推送,然後調用釘釘的接口把我們的消息推送到釘釘上去。我這裡用java寫了一個簡單的demo

 @RequestMapping("/accept")
    public  ResponseEntity<String> acceptWebHook(HttpServletRequest request ,@RequestBody JSONObject body ){
        LOGGER.info("收到azure推送過來的消息:{}",JSON.toJSONString(body));
        DingTalkDTO dingTalkDTO=new DingTalkDTO("azure推送"+ JSON.toJSONString(body));
        RestTemplate restTemplate=new RestTemplate();
        ResponseEntity<String> res=restTemplate.postForEntity(DingTalkUrl,dingTalkDTO,String.class);
        LOGGER.info("釘釘響應結果:{}",res);
        return  res;
    }

demo編寫好之後,我們給他運行到一個公網可以訪問到的地址上去。

接下來,我們開始配置azure的webhook,打開倉庫的管理,點擊左側的 Service Hook,選擇web hooks,然後我們選擇觸發事件為code pushed,需要要監聽的代碼倉庫和分支

填入我們剛才寫好的服務地址,azure就會把消息推送到我們的服務上去,配置好之後我們運行一下看看效果。

 

 

我提交了一部分代碼之後 ,看一下通知的效果,控制台日誌輸出已經收到了azure的推送,並且成功的調用了釘釘的接口,發送了通知,並且釘釘也收到了消息。

azure推送的數據結構比較繁瑣,我們可以選出自己需要的字段進行加工後,推送適合自己的消息。

 

 

 

 

 到這裡azure git倉庫和釘釘的交互就完成了,當然還有很多別到花樣可以玩,這裡我只是簡單的寫了一個demo,下一篇文章,我們將繼續探索azure devops的其他功能。