svn + 釘釘機器人制作簡單的程式碼跟蹤系統

coding01發表於2019-03-04

Webhooks

在開始今天的主題之前,讓我先說說 Webhooks。

我在很早之前使用一個第三方的支付聚合平臺 ping++ (www.pingxx.com)

svn + 釘釘機器人制作簡單的程式碼跟蹤系統

在使用者支付完結後,通過「Webhooks」將支付結果推送到我們自己的伺服器,然後我們就可以繼續做後續的訂單完結等操作。

這裡的「Webhooks」,它能在「某個結點」把我們所關心的「某些資料」推送給我們所定義的接收連結上,繼續後續操作。

svn + 釘釘機器人制作簡單的程式碼跟蹤系統

又比如在 github 上,有人對你發了一個 issue,然後系統自動觸發這個 webhooks,將 issue 資訊推送出來,你只要定義好接收的介面即可。

在很多地方「Webhooks」已經成為需要或者有可能需要為後續提供定製化操作的「樞紐」,一直是我所鍾愛的一個概念。

基於 svn + 釘釘的程式碼監控系統

收回我們今天想要做的一件事:如何利用 svn 的 Webhooks,加上釘釘群機器人,來構建我們的程式碼監控系統。

相信大家已經知道我怎麼做了,直接進入主題。

svn Webhooks

在現實開發中,很多企業或者公司,基本都會使用 github,國內的碼雲、coding.io 等程式碼託管平臺,或者利用 GitLab來搭建基於 Git 的程式碼版本控制。但還是有很多使用 svn 來做版本控制。

在 svn 中,也有多個 Webhooks:

svn + 釘釘機器人制作簡單的程式碼跟蹤系統

目前 svn 提供 5 個 hooks,其中重點說說下面三個:

hook 含義 引數
start-commit 它在提交事務產生前已執行,通常用來判定一個使用者是否有權提交 版本庫的路徑,和要進行提交的使用者名稱
pre-commit 在事務完成提交之前執行,通常這個 hook 是用來提交的資訊是否不符合要求而不允許提交 版本庫的路徑和正在提交的事務名稱
post-commit 它在事務完成後執行,建立一個新的修訂版本 大多用這個 hook 來傳送關於提交的描述性電子郵件,或者作為版本庫的備份,本文主要利用這個 hook 推送資訊到釘釘群,做為監控的源頭

具體可以參考網站的詳細說明:SVN版本管理詳解 www.kancloud.cn/i281151/svn…

注: svnlook 命令是個好工具,可以用於檢視很多 svn 版本資訊,推薦看看

svn + 釘釘機器人制作簡單的程式碼跟蹤系統

釘釘群機器人

有了 svn hooks,那麼我們就需要一個接收 hooks 傳過來資料的「介面」,作為監控,我們第一個關心的是:只要有同事提交程式碼了,我們能實時接收到訊息。

市面上有很多這種接收資訊的工具,如 零信、Slack、BearyChat、微信模板訊息、企業微信、釘釘群機器人等等;只要能把訊息實時送達到我們的手機上即可。

本文重點推薦使用「釘釘群?」,主要因為簡單,而且不需要任何「成本」,如零信等有資訊條數的限制和 money;模板訊息、企業微信都需要所謂的 access token,需要藉助伺服器開發。

但釘釘機器人呢,完全可以不借助任何東西就可以做到「無縫」對接 svn 的 hooks。

下面讓我們來看看怎麼如何建立群機器人的吧:

1. 建立一個只有自己的「內部群聊天」:

svn + 釘釘機器人制作簡單的程式碼跟蹤系統

2. 建立機器人

svn + 釘釘機器人制作簡單的程式碼跟蹤系統

3. 選擇「自定義」

svn + 釘釘機器人制作簡單的程式碼跟蹤系統

svn + 釘釘機器人制作簡單的程式碼跟蹤系統

4. 選擇新增後,隨便給機器人起個名字

svn + 釘釘機器人制作簡單的程式碼跟蹤系統

這之後,記得複製出來該機器人的 Webhook 連結,如:

https://oapi.dingtalk.com/robot/send?access_token=0ca87986b61166d06a9a588c0f7ba648639208bd1f02971655fc5927b0620***
複製程式碼

5. 建立成功後,機器人會發一條訊息出來:

svn + 釘釘機器人制作簡單的程式碼跟蹤系統

好了,有了這個連結,我們就可以結合 svn 的 post-commit 來接收提交的基本資訊了。

注: 至於釘釘群機器人 Webhook 如何使用,可以參考釘釘官網說明:open-doc.dingtalk.com/docs/doc.ht…

post-commit to 釘釘

本文實現最簡單的監控:只要有同事提交程式碼,就將資訊及時推送到釘釘群裡,這樣只要在這個群的所有同事都能實時收到推送訊息了。

這時候,只要在 post-commit 檔案中,將 svn 的資訊利用 POST 方法請求釘釘群機器人的連結即可。

svn + 釘釘機器人制作簡單的程式碼跟蹤系統

其中,HOOKS 就是上文的釘釘機器人的連結,payload 可以參考釘釘群機器人使用說明。

由於不同系統的 svn,可以對應使用不同的指令碼語言來編寫推送程式碼,本文在 Linux 環境下,所以直接用 shell 指令碼語言。

最後可以試驗下,看看之前我搭建的監控效果:

svn + 釘釘機器人制作簡單的程式碼跟蹤系統

總結

其實,釘釘群機器人,也是一個 Webhook,通過一系列不同服務的 Webhooks 的串聯,將我們需要了解的資訊,最終實時傳送到我們的手機裡,我們能及時得到資訊。

如本文的系統,同事提交程式碼 -> svn post-commit Webhook -> 釘釘群機器人 Webhook -> 推送到釘釘群裡。

因為時間關係,拋磚引玉,如何將 Webhooks 用到極致,實時的監控和得到我們所需要的資訊,這是本文所想要闡述的,希望對你有所作用。

「完」


coding01 期待您繼續關注

qrcode

相關文章