和康顧問 版權所有 2023 © All Rights Reserved
Table of Contents
ToggleCI/CD 概念
- Culture
- Auaomation
- Lean
- Measurement
- Sharing
CI (Continous Integration) 持續整合
持續整合(Continous Integration,CI)顧名思義是指當開發人員完成階段性程式碼時,透過自動化工具進行測試、驗證,檢查程式碼有無問題,並建置即將部署上線的版本。CI的流程為 :
程式建置(build)
開發人員在開發並撰寫程式碼的時候,通常會使用版本控制進行Commit&Push,且Push上去的程式碼不會因為環境變數、套件不同而造成無法編譯,如果工程師在每次Push後都需手動編譯的話會太麻煩,因此可透過自動化編譯的方式將程式建置起來。程式測試
當程式編譯完成後,會透過單元測試或整合測試,測試程式碼有無問題、功能是否正確、是否影響到現有功能等,當然,前提是單元測試等需寫得好,整個測試過程才會順利。目的
在CI階段,可以有效降低人為疏失的風險、進行版本控制,並減少團隊的loading,工程師只要Push上去即可,後面就由CI工具以自動化的方式進行程式碼的檢查、測試與驗證,只要發現錯誤,即可立即修改。不僅節省許多時間,還減少人工手動的作業。
CI/CD 的好處
1. 維護軟體品質
有寫過程式的人一定都知道,如果能及時發現bug並修正錯誤,就能避免軟體上線後所造成的災害,以及出現難以修復的狀況。透過CI/CD工具,能自動化的檢查程式碼有無bug、是否正確且符合標準,確認無誤後才發布並上線,便可大幅降低錯誤發生的機率,提高軟體的品質。
2. 減少各項成本
因程式碼的編譯、檢查、測試,甚至是部署的動作都以自動化的方式進行,且透過CI/CD工具快速找出問題點,預防小錯誤演變成複雜問題,不僅減少大量的時間與人力成本,還加快了整體開發的流程。
CI/CD 工具
市面上有非常多的CI/CD工具,底下列出幾種較多人常用的工具 :
- Github (版本控制工具)
- Gitlab (版本控制工具)
- Jenkins (自動化建置工具)
- Circle CI (自動化測試、建置、部署工具)
- Drone (自動化建置工具)
- Docker (迅速部署環境工具)
- ELK (Elasticsearch : 日誌或Log搜尋引擎工具、Logstash : Log 過濾、整理與分析工具、Kibana : 資料視覺化工具)
- Telegram (通訊或通知工具)
- Slack (通訊或通知工具)