團隊協同開發的好夥伴 – CI/CD

By Robert

在討論軟體開發的過程中,我們可能常會聽到「CI」、「CD」這兩個專有名詞,你是否也跟小編一樣,剛聽到時候都「霧煞煞」,不知道這是什麼呢。今天就讓小編帶大家一起認識它們,Go!

什麼是「CI」、「CD」?

CI全名為Continuous Integration,其中文為「持續集成」或「持續整合」,指的是在多人開發過程中,持續的提交與整合程式碼。在團隊協同開發時,每位開發者的程式碼需要透過提交與合併以完成整合動作,當中常見的狀況之一為程式碼的衝突,通常需花費額外人力排除。當提交與合併的間隔越長,合併失敗與衝突的可能性就越高。因此,藉由縮短整合間隔並持續整合,將能有效避免「衝突夢魘」。

CD則包含兩個涵義,分別為Continuous Delivery – 「持續部署」及Continuous Deployment – 「持續交付」。「持續部署」是指前一步驟的「持續整合」完成後,將合併成功的程式碼部署到測試環境,藉由工具協助與良好的組態管理規劃(configuration management),達到自動且快速的部署動作,以加速後續的整體測試與驗證。

而「持續交付」代表的是每當前兩步驟完成後,完成測試與驗證的程式就交付到客戶端或立即上線。透過持續交付,可加速使用者的反饋時間,開發人員可以更迅速的了解用戶體驗。

為什麼要「CI」、「CD」?

由上述的說明我們可以看出,CI/CD的核心概念為縮短軟體開發時的交付整合週期,透過持續驗證並配合自動化套件輔助,降低開發過程中處理異常失敗的時間與人力成本。其帶來的優點如下:

  1. 部分工作自動化,減少人力與時間成本:在CI/CD的架構中,環境建置、單元測試、日誌紀錄、產品部署等動作都可利用程式或輔助工具自動化執行。除了減少這些項目上的人力資源花費,重複的工作項目交由自動化程式執行的速度也更快。
  2. 確保最新版本的可行性:CI/CD的架構除了降低多人開發時的整合週期與程式碼衝突的比率,藉由高頻率的提交程式新功能及自動化建置與測試,能確保新功能或新版本的可行性,並能在最短時間上架。
  3. 增加團隊信心:藉由縮短提交與合併的週期,CI/CD的架構降低的合併衝突發生的機率,即使發生了大多都是較小問題,開發者通常能立即解決。再者,合併完成後的功能透過自動佈署與測試,如有問題將能更迅速的被發現與回報。此外,新功能快速穩定的上線,不僅能給客戶帶來更好的觀感,對於開發團隊也會帶來相當的鼓勵與信心。

相關工具介紹

目前有許多CI/CD的相關工具,例如:Travis CI、Bamboo、CircleCI、…,以下介紹3個常見的CI工具供大家參考。

  1. Jenkins

Jenkin是一套廣為人知的老牌CI工具,為Java語言所編寫之開源CI工具,其特色為:

  • 完善的UI介面
  • 支援大量的擴充套件(Plugin)
  • 支援多種程式碼倉庫(Repository,又稱版本庫)
  • 發展歷史較久且廣為人知,具有大量的相關資訊
  • 可依套件產生多樣的報告
  1. GitLab CI/CD

GitLab CI/CD為GitLab推出的CI/CD功能,於8.0版本時新增,使用Ruby及Go語言編寫,其特色為:

  • 與GitLab的相容性極高
  • 提供API,允許開發人員自製需求的整合功能
  • 可針對單個流程重複執行或產出報表
  1. Drone

Drone是一套使用Go語言開發的開源CI工具,基於docker所開發並支持docker,其特色為:

  • 非常輕量,請容易部屬
  • 原生及擴充套件皆基於docker所開發(Everything as docker)
  • 可透過擴充套件觸發其他CI服務/工具

總結

結合CI/CD可讓協同開發更加迅速及穩健,雖然建置與導入過程中可能會遇到各種困難與需適應項目,例如:需有版本控制、需結合單元測試、開發成員須配合持續整合等,但其帶來的效益是相當不錯的。如果你的團隊是協同開發,或許可以考慮試試看CI/CD。

 

參考資料

[1] iT邦幫忙-從零開始建立自動化發佈的流水線系列 第 8 篇

https://ithelp.ithome.com.tw/articles/10204538

[2] 每日頭條-一文幫你秒懂CI, CD AND CD

https://kknews.cc/zh-tw/code/r88ql8r.html

[3] Bear熊-什麼是 CI / CD ?

https://medium.com/@william456821/%E4%BB%80%E9%BA%BC%E6%98%AF-ci-cd-72bd5ae571f1

[4] 壹讀-乾貨 | 容器平台下的CICD工具如何選型?

https://read01.com/zh-tw/DnyxjM3.html#.XdNiuFczaM8

[5] IT閱讀-2019年21個好用的持續整合(CI)工具

https://www.itread01.com/hkefixi.html

[6] Heresy’s Space-Gitlab CI/CD 簡單介紹

https://kheresy.wordpress.com/2019/02/13/gitlab-ci-cd/

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。