# 自動化佈署流程設計 ## **一. CI/CD 概述** :::info CI/CD 簡單說明就是將程式上版的流程自動化,自動 build code、執行 unit test、自動更新線上服務,將所有反覆步驟轉為自動化執行 ![](https://i.imgur.com/n8D0Z47.png) ### **CI (Continuous integration),即是「持續整合」** **流程 :** * 「程式建置」 開發人員在每一次的 Commit & Push 後,都能夠於統一的環境自動 Build 程式,透過此一步驟可以避免每個開發人員因本機的環境&套件版本不相同,造成 Service 異常。 * 「程式測試」 當程式編譯完成後,將會透過「單元測試」測試新寫的功能是否正確,或者確認是否有影響到現有功能,透過該步驟進行測試,可以避免掉開發人員遺忘於本機先行檢查,作為「雙重驗證」工用。 <br> **目的 :** * 將低人為疏失風險 * 減少人工手動的反覆步驟 * 進行版控管制 * 增加系統一致性與透明化 * 減少團隊 Loading ### **CD(Continuous Deployment),即是「持續佈署」** **流程 :** * 「部署服務」 透過自動化方式,將寫好的程式碼更新到機器上並公開對外服務,另外需要確保套件版本&資料庫資料完整性,也會透過監控系統進行服務存活檢查,若服務異常時會即時發送通知告至開發人員。 <br> **目的 :** * 保持每次更新程式都可順暢完成 * 確保服務存活 ::: --- ## **二. 系統發佈流程** ![](https://i.imgur.com/MXtdkls.png) <br> ## **三. 使用 Jenkins - 系統發佈流程** ![](https://i.imgur.com/InmJGWz.png) <br> ## **四. Kubernetes 平台概述** * ### **平台架構** ![](https://i.imgur.com/XfU9IjE.png) <br> * ### **平台模組** ![](https://i.imgur.com/jlUbmjp.png) ###### tags: `自動化佈署` `CICD` `Micro-service` `kubernetes`