Skip to main content

CI/CD的架構

和康顧問 版權所有 2023 © All Rights Reserved

何謂CI (Continuous Integration,持續整合)

為了避免於正式環境出現程式異常、程式推送遠端平台如GitHub發生衝突,會執行CI(Continuous Integration,持續整合),在多人協作的狀況下,因為每個人的開發環境或習慣未必相同,因此CI將顯得更為重要。在CI過程中,開發人員會透過版本控制工具如Git進行版控,提交與推送更動後的程式碼至版控遠端平台如GitHubGitlabBitbucket等,接著透過CI工具讀取相關設定檔進行程式的建置(Build),過持中可能環境建置、下載相依資源或套件、打包程式等,建置完成後的程式才會進入測試(Test)階段。

 

在測試階段,可以對程式進行驗證與測試,使用的測試方法可用單元測試、整合測試、冒煙測試、回歸測試等,測試流程可以透過設定檔之腳本進行,或者是經由測試工程師寫好的程式進行測試。如果測試結果為通過,即可進行下一階段——CD

何謂CD (Continuous Delivery / Continuous Deployment,持續交付/持續部署)

其實CD可以分成兩種,分別為持續交付(Continuous Delivery)與持續部署(Continuous Deployment)

持續交付指的是開發人員將測試通過且良好的程式碼以手動的方式進行部署,開發人員會先確認測試狀況或其他狀況,再以下指令的方式使用部署工具進行部署。

持續部署是建構於持續交付的基礎之下,兩者的差別在於持續交付需要開發人員以手動方式請求部署,但持續部署是以自動化的方式進行部署,全程不需要透過開發人員進行,因此只要開發人員更動新的程式碼並提交,後續所有流程包含部署都將自動化。

 

部署於正式環境的程式碼可能會發生程式異常或系統出錯等問題,因此大多數的團隊會搭配監控、通知或日誌工具進行監控,一旦發生任何問題,開發人員都能於第一時間解決問題。

何謂CI/CD (Continuous Integration/ Continuous Deployment持續整合/持續部署)

CICD的結合稱為CI/CD(Continuous Integration/Continuous Deployment),從程式版本的提交、推送、建置、測試、部署與監控為完整的CI/CD流程,在CI/CD流程中最為重要的是CI階段,因為開發人員會使用CI/CD的目的是為了提高軟體流程的效率、降低成本與時間,以及能夠部署於正式環境前盡早發現問題與錯誤,維護軟體品質,而CI階段就是整個CI/CD流程最為重要的階段,如果CI階段沒做好將會失效CI/CD本身的效益。

CI/CD 流程

下圖為CI/CD常用工具,比如版本控制工具與平台會使用GitGitHubGitlab等,CI工具為Circle CIJenkinsTravis CI等,但下圖僅供參考,因為圖中的JMeter為壓力測試工具,但壓力測試是需要將程式放置於測試環境或正式環境裡才可進行測試,因此下圖工具僅供參考。