好文分享 — 麥當勞怎麼做 CI (Continuous Integration)
想不到吧!麥當勞也有 Technical Blog!
“Reduce, reuse, recycle: McDonald’s reusable workflows” 1 文是由麥當勞的工程師分享他們怎麼透過可共用的 GitHub Actions 幫助各個團隊/工程師做到持續整合(CI)流程。
說到 CI 流程,最常見的問題就是每個產品有各自的流程,所以很難有 1 套 CI 流程適用於所有的產品,這個問題很可能導致每個產品的程式碼品質與標準不一,而且新的產品也需要經歷一次重新打造 CI 流程。
麥當勞的工程團隊則是透過提供各種共用、可重複使用的 GitHub Actions 與 Containers 給各個團隊使用,譬如 code quality, security, testing 等相關 Actions, 每個產品都可以很輕易地挑選合適的 Actions 進行整合。
除此之外,麥當勞的工程團隊還為每個 repository 自動加入預設的 GitHub Actions 設定,該設定會讓每個 repository 執行標準化的 CI 流程,稱為 Golden Path, 所以每個 repository 產出都有基本的品質保證,在此基礎之上,每個 repo 還是保有擴充的彈性,可以為 CI 流程加上客製化的流程。
這種共用的 GitHub Actions 以及標準 CI 流程,甚至可以輕鬆地加入監控(monitor)的功能,因為只要改 1 個 Actions 加入收集數據的功能,就可以得到所有 repository 的狀況。
讀完這篇文章,我就想到以前也有遇到類似的問題,但當時沒有想到可以共用,反而是為每個 repository 複製 1 套流程,有點可惜了 :(