iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 27
0
Modern Web

Go into Web!系列 第 27

Day 27 | CI/CD 的導入 - 概念篇

在這個到處都是敏捷開發的時代,常常會聽到 CI/CD 這類的名詞出現,那麼他們到底是什麼呢,就讓我們好好來探討一下。

情境

相信有許多朋友在職場上會遇到以下的問題

跟同事一起開發的功能到後來不曉得是哪個錯誤導致專案順利執行

與同事一起開發同一個功能,在經過無數的 commit 與 push 之後,到了要 merge 的環節發現專案有衝突或是無法編譯,才花費了許多時間排查問題。

每次要發版或部署都要手動做

每次都要耗費人力在做一些重複的工作,例如 merge 專案、做單元測試、打包與部署等步驟。

每次要將系統上線到 production 都只能祈禱不要出問題

就算在測試環境通過測試,在久久一次需要發佈版本到 prodiction 環境時還是只能跟他賭,看看上線後會不會出現什麼異常,沒有異常最好,有異常要找問題是十分的困難。


那麼,以上的問題有什麼比較好的解決方法呢?

有的,可以透過導入 持續整合(CI)與持續交付(CD) 來避免掉上述問題。

概念

持續整合(Continuous Integration)

解決程式相容性錯誤

配合 git flow,當每次有 commit 被 push 到對應的 branch 時,都會自動執行 編譯 的動作,這樣的好處在於可以快速了解此次 commit 有沒有問題,有問題的話就可以即時的修正

測試測試再測試

在每次編譯完成後都會執行單元測試,目的在於檢查新功能的邏輯是否有異常,以及舊有功能是否有受到影響等等,透過這樣的確認可以有效地確保軟體品質。

解決問題

  • 維持系統一致性
  • 快速定位問題點
  • 減少人員介入,提升開發效率

持續交付(Continuous Delivery)

此流程通常都是接續在 CI 之後,將已經驗證完畢的 code 發佈至 release branch,這樣的好處在於我們隨時都有一個可以部署至生產區的程式碼。

有人把 CD 也稱作 持續部署(Continuous Deployment),跟持續交付的主要差異在於持續部署就是當程式碼測試通過就自動部署至生產區域,而持續交付需要人工的進行部署。

小結

透過導入 CI / CD 可以減少開發過程中許多不必要的問題,也同時確保軟體品質不會低落,明天讓我們來講如何架設基礎環境吧!

參考


上一篇
Day26 | 使用 Docker 封裝與運行 Go 程式(二)
下一篇
Day28 | CI/CD 的導入 - 環境篇
系列文
Go into Web!30

尚未有邦友留言

立即登入留言