什麼是 CI/CD ? CI/CD 可以幫助我們做到什麼事情? 為什麼要有 CI/CD ?
在傳統程式上線流程,例如可能要透過 FTP 上傳至伺服器,接著去修改環境變數,然後測試程式是否運作正常,然後伺服器重新開機就上線了。
在近代程式上線流程,例如說會有個像 Gitlab、GitHub 或者是 Jenkins,會有程式碼版控系統,把程式碼上傳上去至平台上,然後可能還跑一些測試,然後開啟 FTP,將程式碼上傳至伺服器,修改環境變數,然後就上線。
在現在程式上線流程,一樣會有個像 Gitlab、Jenkins 這樣的平台,然後我們將我們寫好的程式功能,上傳到平台上,接著我們會寫一些自動化測試的功能及自動化佈署的功能腳本,然後這些平台會去讀取我們撰寫好的腳本,去跑測試,以及佈署,可以幫助我們簡化許多佈署流程,整個佈署流程有如以下圖
CI(Continuous Integration) 是指持續整合,也就是在工程師,在撰寫程式新功能,或者修正 Bug,上傳到 GitLab 平台,然後如果功能沒有問題打包 Docker Image,在這過程叫持續整合。
CD(Continuous Delivery/Deployment) 是指時序交付或是持續佈署,在程式碼寫完沒問題,要佈署到伺服器,這個過程叫做時序佈署,那為什麼還會有持續交付,那是因為通常會準備是少兩個或三個環境,來進行模擬上線,測試系統功能是否正常,如果在 development 主機及 staging 主機有問題時,在重新修補功能,然後再次模擬上線及測試系統功能,在最後一切沒有問題時,佈署近正式主機,以達成上線功能。
以持續交付的話,有如上圖在不斷有新功能佈署到 development 和 staging 主機的這過程,可叫持續交付
以持續佈署的話,有如上圖不斷佈署至 development 、staging 和 production,這整個大框架叫持續佈署