開發與網路

CI / CD 持續整合與部署是什麼?改完自動測、自動上線

CI(Continuous Integration,持續整合)是指每次程式改動都自動合併進主線並跑一遍測試,讓問題在幾分鐘內就被發現。CD(Continuous Delivery 或 Continuous Deployment,持續交付或持續部署)是接在後面的自動化:測試通過之後自動打包,並自動或一鍵送上線。兩者合起來的目的不是加快速度,而是把上版變成低風險、可重複、出錯能快速回復的例行動作。
CI / CD 持續整合與部署是什麼?改完自動測、自動上線:文章重點卡

CI / CD 持續整合與部署是什麼?改完自動測、自動上線

團隊裡最怕的一句話是「先不要動,等我下班後手動上一次」。上線一旦靠人記得步驟,就注定有一天會漏掉一步。

CI / CD 就是把那些步驟寫成機器每次都會照做的流程。不是為了快,是為了不出錯。

你將學到什麼

CI 持續整合

每次改動都自動合併並跑測試,問題在幾分鐘內被抓出來。

CD 持續交付與部署

測過之後自動打包,自動或一鍵送上線。

白話比喻

像出貨前的自動品檢線。每一批都照同一套檢查,不靠人記得。

真正的價值

不是更快,是可重複、低風險、出事能快速回復。

定義

CI 是持續整合:每次程式改動都自動合併進主線並跑一遍測試。目的是讓衝突與錯誤在幾分鐘內就被發現,而不是累積到最後一次爆開。

CD 是持續交付或持續部署:測試通過之後自動打包,並自動或一鍵送上線。它把上版從一件需要記憶與勇氣的事,變成一個按鈕。

白話比喻

像工廠出貨前的自動品檢線。每一批貨都走同一條線、照同一套標準檢查,不靠某位資深師傅記得該看哪幾項。

人會累會忘,機器不會。CI / CD 的價值不在快,在於每一次都一樣。

一條流程長什麼樣

典型的五段:開發者推送程式碼、系統自動安裝相依套件並建置、跑自動化測試與檢查、把成品打包成可部署的版本、最後部署到測試或正式環境。

任何一段失敗就停下來並通知,不會硬著頭皮往下走。這個「停下來」比「跑得快」重要得多。

跟相近名詞的差別

名詞指的是關係
CI / CD自動整合、測試與上線的整條流程上位概念
Git版本控制系統CI 的觸發來源,改動從這裡進來
Deploy 部署把程式送上伺服器執行CD 的最後一步
Docker把程式與環境打包成映像檔讓每次部署的環境一致

實際用例

把 AI 應用上線也適用。提示詞、模型設定、知識庫的更新都算是改動,一樣值得走流程:改完自動跑一組驗收題目,結果不合格就擋下來。

另一個實務重點是把版本編號烙進成品裡,讓執行中的服務自己顯示它跑的是哪一版。這樣「到底部署上去了沒」三秒就能對出真假,不必再靠猜。

常見誤解

最常見的誤解是以為 CI / CD 是為了上線更快。它真正買的是可重複與可回復,速度只是副產品。沒有測試的自動部署,只是讓錯誤更快傳到使用者面前。

第二個誤解是以為建好流程就萬無一失。設定檔沒被納入、遷移步驟沒被觸發,都是常見的漏網之魚。上線之後仍然要實際確認新版真的生效了。

本文源起本文為酒Ann 的 AI 名詞彙編系列,用白話把常見名詞一次講清楚。歡迎追蹤 酒Ann 的 Facebook

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

持續交付跟持續部署差在哪?
持續交付是每次通過測試的版本都已經隨時可以上線,但真正上不上由人按一下決定。持續部署是連那一下都省了,通過就直接上線。兩者的縮寫都是 CD,差別在最後有沒有人工閘門,風險承受度不同的團隊選擇不同。
小團隊或一個人也需要 CI / CD 嗎?
需要,而且效益常常更大。一個人手動部署最容易漏步驟,也最沒有人幫你複查。先把最小的一段自動化就有價值:改完自動跑測試,或是合併之後自動部署到測試環境。不必一次做全套。
有了 CI / CD 就不會出事嗎?
不會。它保證的是每次都照同一套流程跑,不保證那套流程是對的。測試沒寫到的地方一樣會漏,設定檔沒被納入流程一樣不會更新。所以除了建流程,還要能驗證「這次上去的到底是哪一版」。