在開始今天的主題以前,讓我先說說 Webhooks。git
我在很早以前使用一個第三方的支付聚合平臺 ping++ (www.pingxx.com)github
在用戶支付完結後,經過「Webhooks」將支付結果推送到咱們本身的服務器,而後咱們就能夠繼續作後續的訂單完結等操做。web
這裏的「Webhooks」,它能在「某個結點」把咱們所關心的「某些數據」推送給咱們所定義的接收連接上,繼續後續操做。shell
又好比在 github 上,有人對你發了一個 issue,而後系統自動觸發這個 webhooks,將 issue 信息推送出來,你只要定義好接收的接口便可。api
在不少地方「Webhooks」已經成爲須要或者有可能須要爲後續提供定製化操做的「樞紐」,一直是我所鍾愛的一個概念。bash
收回咱們今天想要作的一件事:如何利用 svn 的 Webhooks,加上釘釘羣機器人,來構建咱們的代碼監控系統。服務器
相信你們已經知道我怎麼作了,直接進入主題。微信
在現實開發中,不少企業或者公司,基本都會使用 github,國內的碼雲、coding.io 等代碼託管平臺,或者利用 GitLab來搭建基於 Git 的代碼版本控制。但仍是有不少使用 svn 來作版本控制。svn
在 svn 中,也有多個 Webhooks:工具
目前 svn 提供 5 個 hooks,其中重點說說下面三個:
hook | 含義 | 參數 |
---|---|---|
start-commit | 它在提交事務產生前已運行,一般用來斷定一個用戶是否有權提交 | 版本庫的路徑,和要進行提交的用戶名 |
pre-commit | 在事務完成提交以前運行,一般這個 hook 是用來提交的信息是否不符合要求而不容許提交 | 版本庫的路徑和正在提交的事務名稱 |
post-commit | 它在事務完成後運行,建立一個新的修訂版本 | 大多用這個 hook 來發送關於提交的描述性電子郵件,或者做爲版本庫的備份,本文主要利用這個 hook 推送信息到釘釘羣,作爲監控的源頭 |
具體能夠參考網站的詳細說明:SVN版本管理詳解 www.kancloud.cn/i281151/svn…
注: svnlook 命令是個好工具,能夠用於查看不少 svn 版本信息,推薦看看
有了 svn hooks,那麼咱們就須要一個接收 hooks 傳過來數據的「接口」,做爲監控,咱們第一個關心的是:只要有同事提交代碼了,咱們能實時接收到消息。
市面上有不少這種接收信息的工具,如 零信、Slack、BearyChat、微信模板消息、企業微信、釘釘羣機器人等等;只要能把消息實時送達到咱們的手機上便可。
本文重點推薦使用「釘釘羣🤖」,主要由於簡單,並且不須要任何「成本」,如零信等有信息條數的限制和 money;模板消息、企業微信都須要所謂的 access token,須要藉助服務器開發。
但釘釘機器人呢,徹底能夠不借助任何東西就能夠作到「無縫」對接 svn 的 hooks。
下面讓咱們來看看怎麼如何建立羣機器人的吧:
1. 建立一個只有本身的「內部羣聊天」:
2. 建立機器人
3. 選擇「自定義」
4. 選擇添加後,隨便給機器人起個名字
這以後,記得複製出來該機器人的 Webhook 連接,如:
https://oapi.dingtalk.com/robot/send?access_token=0ca87986b61166d06a9a588c0f7ba648639208bd1f02971655fc5927b0620***
複製代碼
5. 建立成功後,機器人會發一條消息出來:
好了,有了這個連接,咱們就能夠結合 svn 的 post-commit 來接收提交的基本信息了。
注: 至於釘釘羣機器人 Webhook 如何使用,能夠參考釘釘官網說明:open-doc.dingtalk.com/docs/doc.ht…
本文實現最簡單的監控:只要有同事提交代碼,就將信息及時推送到釘釘羣裏,這樣只要在這個羣的全部同事都能實時收到推送消息了。
這時候,只要在 post-commit 文件中,將 svn 的信息利用 POST 方法請求釘釘羣機器人的連接便可。
其中,HOOKS 就是上文的釘釘機器人的連接,payload 能夠參考釘釘羣機器人使用說明。
因爲不一樣系統的 svn,能夠對應使用不一樣的腳本語言來編寫推送代碼,本文在 Linux 環境下,因此直接用 shell 腳本語言。
最後能夠試驗下,看看以前我搭建的監控效果:
其實,釘釘羣機器人,也是一個 Webhook,經過一系列不一樣服務的 Webhooks 的串聯,將咱們須要瞭解的信息,最終實時傳送到咱們的手機裏,咱們能及時獲得信息。
如本文的系統,同事提交代碼 -> svn post-commit Webhook -> 釘釘羣機器人 Webhook -> 推送到釘釘羣裏。
由於時間關係,拋磚引玉,如何將 Webhooks 用到極致,實時的監控和獲得咱們所須要的信息,這是本文所想要闡述的,但願對你有所做用。
「完」
coding01 期待您繼續關注