the DevOps journey - 在VSTS CI(Continuous Integration)中發送Line通知

需求很簡單,我們希望在VSTS的程式碼Code Check In(Code pushed)、Build Success/Fail、或是Work item發生了改變時,透過Line發送通知給特定人員(專案成員、PM…etc.)

會有這個需求很單純,我們希望通知(notification)更加即時,每當任何團隊成員簽入程式碼,或伺服器端的建置(Build)完成有結果之後,相關人員都能夠立即得到通知。過去,我們是用email,隨著各種IM肆無忌憚的入侵我們的生活,現在用推送訊息來通知也是很合理的…

在台灣,你不可能不用Line,幾乎沒有人能跟朋友說自己沒有Line帳號,因此,在VSTS CI (Continuous Integration)當中整入Line通知也是理所當然的。

怎麼做呢?

首先你可以在VSTS的Team Project的管理畫面中,找到Service Hooks,這是一個好用的功能,他可以幫你在該專案特定事件發生時,連結到外部系統並觸發某個動作:

如果你按下上圖的新增鈕,會發現其實已經很多外部系統可以連結了,例如大家很熟悉的Slack、Trello…,很不幸的,我們要發訊息的Line不在裡面:

但不要緊,你會發現我們可以透過Web Hook觸發一個http post,我們只要在該http post裡面來發送Line訊息即可。因此,我們在上圖中的畫面選擇Web Hook,接著按下Next,會出現下圖中的畫面,在該畫面上你可以選定Trigger,也就是,當哪一個事件發生時,要觸發http post來發送通知:

你會看到,選項中有Code Checked in(支援git版控的專案則會出現code pushed),以及Build completed、WorkItem Created/Updated/Deleted…等觸發事件,請選擇你要的。

然後按下Next,接下來出現的Action畫面,你只需要輸入 URL即可,也就是您選定的事件發生時,要以Http post通知哪一個URL?

你可以自行設計一個可接受http post的WebAPI,並在其中發送Line訊息。如果你還不知道該怎麼設計,我們特別幫你做了一個,讓你可以嘗嘗鮮玩一玩。(其實是我們團隊自己要用的啦…)

請先保留上面這個畫面,別關閉。然後開啟另一個瀏覽器,輸入底下網址:
http://isbaas.azurewebsites.net/VSTSWebHook/default.aspx
將會出現底下畫面,這是一個VSTS WebHook URL產生器:

請依照上圖中的步驟,填妥上面該WebHook URL的用途,按下產生鈕,接著會看到上面產生出一串GUID(WebHook URL),產生出GUID之後,請接著按下上圖(3)的按鈕,將會出現底下的Line登入畫面(這是Line的網頁,而非我們開發的網頁):

如果你還記得,我們前面曾介紹過的Line Notify機制,大概就知道我們準備在該WebHook中透過Line Notify來發訊息(而非用Line Bot),上面的這個登入畫面,就是Line的OAuth機制,用來取得可透過Line Notify發訊息給用戶的Token。

請用您想要接收到訊息的Line帳號登入,按下Login之後會出現底下畫面,讓你確定你要用哪一個帳號(或群組)來接收通知:

請選定後按下Agree and connect,如果一切順利,接著會出現底下畫面:

請牢記上圖中藍色的URL,並將其複製到剛才我們做到一半的WebHook URL輸入畫面中貼上:

按下Finish之後就大功告成囉,你會發現,未來當您的Team Project剛才選定的Trigger發生時,你的Line就會收到來自Line Notify的通知:

你可以把剛才上面的藍色URL貼到多個WebHook Trigger中,這樣當相對的Trigger被觸發時,你剛才綁定的Line帳號都會以Line Notify收到VSTS傳來的通知。

如果除了你自己以外,你也想讓其他團隊成員也收到這些通知,你也可以把剛才的藍色URL分享給團隊成員,請他將該URL貼到瀏覽器上,會出現底下畫面,同樣的按下『訂閱上述WebHook』,並且綁定Line帳號,即可讓您的team member和您一樣,在事件觸發時收到Line Notify的通知訊息:

透過這個簡單的設定,你的VSTS CI Build/Check In(或WorkItem更新)都會即時的以Line通知您,如果有興趣的話就玩玩看囉。以後找時間,我再來介紹這是怎麼實現的…

免責聲明: 以上VSTS WebHook服務網址是我們為內部團隊自用所開發的服務,我們不對此服務進行任何瑕疵擔保。您的VSTS Action JSON資料將會經過此WebHook以及微軟Azure Web App雲端服務,並透過Line Notify機制傳送給予綁定該WebHook的Line帳號,但我們並不會收集和使用您的Action JSON資料。

留言

這個網誌中的熱門文章

原來使用 .net 寫個 MCP Server 如此簡單

使用LM Studio輕鬆在本地端以API呼叫大語言模型(LLM)

開啟 teams 中的『會議轉錄(謄寫)』與Copilot會議記錄、摘要功能

在VS Code當中使用 Azure DevOps MCP Server

原來使用 .net 寫個 MCP Client 也如此簡單