雖然可恥但很有用的技術 - ADO Pipeline 客製報表呈現頁面
上禮拜在改 Azure DevOps 的 Pipeline,因為客戶遇到一個很實際的問題。 用戶抱怨,每次 Pipeline 跑完,他們團隊的 PM 和相關人等都跑來問:「這次測試過了幾個?Coverage 多少?部署有沒有成功?Sonar 掃描的報表結果如何?」 苦主耐心地一一回答:「這些資訊都在 Pipeline 的 tasks 裡面啊,你們自己點進去看就好。」 但是,這些大爺們從來不想自己去一個一個 tasks 去點,他們希望有個「一目了然」的整合頁面,能直接看到他們想要的重點數字就好。 『就算我說服了他們,他們也真的自己去看,但沒多久又在 LINE 上問我:那個 Log 到底是什麼意思?這個掃描報告要在哪裡找?』 就這樣『來來回回,他們累了,我也累了。』 苦主無奈地說。 需求很簡單:給我一個摘要頁面就好 大爺們最後跟苦主說:「你能不能幫我們在 pipeline 裡面弄一個 Summary 頁面?我們只要打開就能看到重點數字,不用再去翻那些 log?」 恩恩,我被問到的就是這個… Pipeline 跑完之後,能不能有個漂亮的摘要頁面,一進來就看到重點: 測試通過幾個、失敗幾個、Coverage 趨勢 部署到哪個環境、- 有沒有什麼重要的警告 源碼掃描報告的摘要是如何? 自動化測試結果? 能不能上正式機? … 就這樣。 說的很簡單,要蒐集到需要的資訊似乎也還算容易。 但問題是,要怎麼把這些資訊「塞」進 Azure DevOps 的 Pipeline Summary 頁面? 然後我發現了個神奇的東西 在翻 Azure DevOps 的文件時,我發現一個很有趣的機制。 你知道那些客製化的 Extensions 是怎麼樣讓你在 Pipeline 的 Summary 頁面看到額外的資訊(例如掃描報告、測試報告)的嗎? 類似底下這樣: 答案可能會讓你傻眼,不是呼叫什麼 REST API、不用設定什麼 Token、也不用安裝套件。 ADO 用的方法超級簡單: 監聽你在 Build Agent 裡面的 console 輸出 。 對,就是 stdout。 你只要在 Pipeline 運行的 script 裡面 echo 一行特定格式的字串: echo "##vso[task.uploadsummary]...