上一篇文章中我們提到了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的其他功能。