(1)什么是CI
What is CI?
CI就是持續集成,持續集成是一種軟件開發實踐,即團隊開發成員經常集成他們的工作,通常每個成員每天至少集成一次,也就意味着每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯、發布、自動化測試)來驗證,從而盡快地發現集成錯誤。許多團隊發現這個過程可以大大減少集成的問題,讓團隊能夠更快的開發內聚的軟件。
🐵PS:把企業中的一系列過程集成在CI平台上,可以寫好腳本,點擊執行,或者定時執行。
CD就是持續交付,是在CI的基礎進行了擴展,在CI環節完成了軟件構建和測試工作並形成了新的版本,那么接下來就要進行交付,而這里的交付並不是交付到生產環境,而是類生產環境,我們可以理解為灰度環境或者預發環境,進而接受部分真實流量的測試,如果沒有問題則通過手動的方式部署到生產環境。
CI常用的工具:Jenkins。
工作流:
開發->提交代碼->靜態代碼掃描(直接通過工具去檢查代碼中的錯誤)->單元測試->編譯->測試->發布
Jenkins是什么?(是一種CI工具)
Jenkins是一個獨立的開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重復的工作,旨在提供一個開放易用的軟件平台,使軟件的持續集成變成可能。前身是Hudson,是一個可擴展的持續集成引擎。可用於自動化各種任務,如構建,測試和部署軟件。
-
主要用於:
-
持續、自動地構建項目、測試軟件項目等。
主要提供了
基於版本管理工具(如CVS、VSS、SVN)感知變化或每天定時的持續集成,並提供持續集成報告、Email(提供豐富的插件庫)等方式通知相關負責人,其要求是需要進行日構建的項目已經編寫好全自動的項目編譯腳本(可基於Maven或Ant)。 -
監控一些定時執行的任務。
-
Jenkins特點
- 開源免費
- 跨平台,支持所有的平台(Linux、mac、windows)
- 支持分布式的build(可以在jenkins上建多個自動化腳本,比如一個跑冒煙測試、一個跑回歸測試)
- web形式的可視化的管理頁面
- 安裝配置超簡單
- tips提示快速的幫助
- 已經有很多的插件(比如:Email Extension、Git、GitHub、Subversion)
(2)CI的價值
-
減少風險
越早發現的錯誤,修正的費用越低。
及時檢查軟件測試的健康狀況,減少發布時的風險。
(比如:每天定時觸發自動化測試項目,自動生成報告) -
減少重復性的工作
通過自動化的持續集成可以將編譯、部署、測試等動作都變成自動化的,無需太多人工干預。 -
任何時間,任何地點都可以部署軟件
利用持續集成,可以經常對源代碼進行一些小改動,並將這些改動和其他的代碼進行集成。如果出現問題,項目成員馬上就會被通知到。
(3)CI的架構
