昨天介紹了 CI(持續整合)跟 CD(持續交付/部署)的概念,而實際將 CI/CD 精神實踐出來的就是 Pipeline。
Pipeline 是從工程師將程式送到版本控制系統(ex: Git)後,開始觸發的一連串自動化流程,會有「建置 (Build) 」- 「測試 (Test)」 - 「部署 (Deploy) 」階段。
Pipeline 中的建置階段,會將程式碼打包成可以跑的應用程式,在這個階段如果建置失敗,工程師就可以有機會提早修改程式當中的錯誤。
建制成功之後,就會進入測試的階段,在這邊會進行不同性質的測試,包含單元測試 (Unit Test)、整合測試 (Integration Test)、安全掃描 (Security Scan)等,在這個階段,不同服務性質的產品,會有相對應的測試,安全性要求較高的系統如銀行相關產品,測試會進行的更全面及嚴謹。
在這個階段也是大部分 bug 被檢查出分的地方。
部署的工作就是將應用程式推到讓 QA 進行手動測試的測試環境,在確認沒問題後,再近一步手動發佈到正式環境,而持續部署的模式下,這一系列流程就會是自動化進行。
一開始在沒有很清楚這幾個關鍵字的時候,會以為 CI+CD=Pipeline。但在問了 ChatGPT 後,覺得它有一個比喻很棒:如果今天有一間餐廳在講求每天都要新鮮製作、快速送到客人桌上,那 pipeline 就會是那條從廚房到客人餐桌的輸送帶(想像迴轉壽司應該就很好理解),一個是精神,一個是實踐的實際流程。
而且現在 Pipeline 的軟體 UI 都有可視化的看板,目前進行到哪一個步驟都可以清楚的看到,對於估時及透明度都大大的提升。