什麼是 CI/CD?一文帶你了解基本觀念

在如今講求快速完成的時代裡,對軟體產品開發的要求也是如此。因此,我們需要一套可以讓產品快速的從開發、測試,到部署的系統。

這個系統就叫做 CI/CD(Continuous Integration / Continuous Deployment)。透過這個系統,開發的結果可以更快速地被認證,開發過程的錯誤也可以更早地被找出。

什麼是 CI/CD?

CI/CD 系統,中文叫做持續整合/持續部署系統,就像軟體開發的生產線一樣。

舉一個簡單的例子,想像我們在烤蛋糕:CI(持續整合)就像定期檢查你的材料並混合它們,以確保一切順利進行。CD(持續部署)就像把蛋糕放進烤箱,一旦烤好就準備好上桌。

在軟體開發中,CI/CD 會自行整合不同開發人員所做的程式碼變更,自動進行測試,並在通過測試後將它們部署到生產環境中。這使軟體開發變得更快速、更有效率,並且減少了錯誤的發生。它讓團隊能夠及早發現並解決問題,迅速向用戶提供更新,並保持軟體的高品質水準。

總結來說,CI/CD 幫助軟體工程師更專注在創造軟體產品,而不是處理部署和整合的技術細節。

CI 持續整合

Continuous Integration 的中文叫做持續整合。持續整合的意義在於,每當工程師完成一部分的程式碼後,系統就會自動透過一系列的工具進行測試,以確保這次的程式碼符合所有標準。

因此,工程師可以很快地知道這次的程式碼有沒有通過測試,並不用等到所有程式碼都完成後才做最終測試。

而之所以叫「持續」整合,是因為工程師被鼓勵即使程式碼只有一點點的進展或是一點點的更動,都可以提交到系統。這樣一來我們隨時可以知道目前這個版本的程式碼是否符合規範。

CD 持續部署

Continuous Deployment 的中文叫持續部署。持續部署的意義在於,程式碼若通過前面的測試後,系統就可以自動將程式碼部署到產品端,以減少人為手工部署的時間與精力。

大致流程

由上圖我們可以很清楚地看到 CI/CD 流程:

  1. 工程師寫好一段程式碼後並提交(git commit & git push)
  2. CI 系統會自動進行測試,以確保當前程式碼符合規範
  3. 進入 CD 環節,程式碼經過最後審查後就會自動部署到產品端

為什麼需要用 CI/CD?

想像一下若是沒有 CI/CD,那麼軟體開發的過程將會變得更為繁雜且耗時。因為沒有了自動化,上述一切的測試、配置、與發佈都是要經由手動完成。

也因為沒有了自動化,這些過程可能都需要花費數週到數月來完成,因此產品迭代的週期非常緩慢。

有了 CI/CD,我們可以更快地交付產品,程式碼的質量和測試也可以在這個系統中得到保證。

這裡我們提到幾個 CI/CD 的好處:

  • 加速產品週期
  • 加快錯誤修復
  • 減少人工程序
  • 提高架構效率

總結

CI/CD 並不是一個工具,而是一個概念。一個幫助軟體世界更加快速進展的概念,而要達到這個概念,我們會需要其他工具的幫忙,比如說 Jenkins、GitHub、和其他系統測試工具。但這裡我們重點著重於解釋 CI/CD。

而且 CI/CD 本身的概念非常簡單,花個這樣小小的篇幅就可以完整解釋了。如果之後有機會,我們再介紹要實踐 CI/CD 這個概念所需要的工具。

那這章就這樣啦~