Tuesday, February 16, 2021

[Architecture ] 持續整合部署 CI / CD

持續整合 CI (Continuous integration)

開發人員透過版控軟體更新程式時會持續將修正版本合併到主版本中,在合併前都需要通過編譯與自動化單元測試,以保障所有修正不會影響到現有版本中。

持續佈署 CD (Continuous Deployment)

持續部署指的是將最新版本自動發部署的過程,會將版控軟體中最新的版本更新至機器上

CI/CD配合工具

在CI/CD執行過程也可搭配 Log蒐集工具與通訊軟體來作為錯誤通報機制

常見版控工具:

自動化建置工具:(CI Server)

Log蒐集工具:

通訊軟體:

實際應用情境

要達成持續整合部署(CI / CD),通常以開放原始碼(Open Source)為基礎,進行功能開發建構的持續控管追蹤。

電子採購系統為例,各個企業組織都有專屬的採購流程、表單,以及資料機密性,配合自有的CI/CD,才能完整掌握公司的供應鏈的優勢利基。

開發團隊 “一定” 要顧好的流程,有這幾個部分:

  1. 版本控制:
    Source code 是開發團隊最重要的資產, 好好的管理它是必要的。所謂的 “管理” 不只是記錄誰改了哪一行 code 而已,他橫跨了整個開發流程,包含開發中的版本,已發行或是以上線的版本,延伸到將來的 hotfix, 或是回報舊版本問題時,是否都能在版控系統內 精確 的定位到當時那份 code… 都在考量的範圍內。
    其實這有點像在製造業的物料管理一樣,序號或是條碼掃描一下,就能知道所有這產品的來歷。在軟體來看,看到版號或是 commit sha, 就要能讓開發團隊追蹤到所有跟 source code 相關的細節。

  2. 自動建置與整合測試:
    大致上就是現在 CI 在講的事情。包含建置 (build, compilation), 測試 (unit test, 其他 auto testing), 其他語法檢查, 源碼掃描等等對程式碼的品質管控機制都包括在內。目的在程式碼有異動時,能第一時間透過自動化的 process 讓 team member 第一時間能掌握這次異動後的系統品質是否仍然可靠?

  3. 發行管理 (Release management):
    包含將 CI 的成品 (artifacts) 經過一連串自動化的程序,部署到執行環境 (dev, qa, production 都算) 上的動作。簡單的說就是把 CI 的東西弄到可以上線測試或是使用的過程。
    版控機制若有不同的分支 (branch), 則不同分支應該有不同的發行方式與規則,如 develop 發行的是 BETA 版,而 master 發行的是 RTM / RC 版本等等。


Reference:

https://columns.chicken-house.net/2017/08/05/what-cicd-do-you-need/

No comments:

Post a Comment

n8n index

 【n8n免費本地端部署】Windows版|程式安裝x指令大補帖  【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能