CI/CD 概念
- Culture
- Auaomation
- Lean
- Measurement
- Sharing
從其他文章會發現DevOps最為重要的目標為速度,從客戶需求、訪談到產品正式上線的時間越短,能得到的回饋與市場就越大,但單純快是不行的,還要兼顧品質!如果只有快,而欠缺品質,只是把有問題的程式碼或bug上線,這種種作法只會徒然破壞企業名聲,也因此,DevOps的目標與概念是讓整個開發工作能夠同時兼顧速度與品質,所產生的一套合作方式(文化)。透過開發人員與IT人員的協同運作、技術整合、流程自動化,可有效提升組織間的合作效率及產品品質。而CI/CD工具也是為了此概念而誕生的自動化工具,接下來就為大家講解CI/CD概念。
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 (通訊或通知工具)