What is CI?web
CI就是持續集成
,持續集成是一種軟件開發實踐,即團隊開發成員常常集成他們的工做,一般每一個成員天天至少集成一次,也就意味着天天可能會發生屢次集成。每次集成都經過自動化的構建
(包括編譯、發佈、自動化測試)來驗證,從而儘快地發現集成錯誤。許多團隊發現這個過程能夠大大減小集成的問題,讓團隊可以更快的開發內聚的軟件。windows
🐵PS:把企業中的一系列過程集成在CI平臺上,能夠寫好腳本,點擊執行,或者定時執行。架構
CD就是持續交付
,是在CI的基礎進行了擴展,在CI環節完成了軟件構建和測試工做並造成了新的版本,那麼接下來就要進行交付,而這裏的交付並非交付到生產環境,而是類生產環境,咱們能夠理解爲灰度環境或者預發環境,進而接受部分真實流量的測試,若是沒有問題則經過手動的方式部署到生產環境。分佈式
CI經常使用的工具:Jenkins
。工具
工做流:單元測試
開發->提交代碼->靜態代碼掃描(直接經過工具去檢查代碼中的錯誤)->單元測試->編譯->測試->發佈
測試
Jenkins是什麼?(是一種CI工具)ui
Jenkins是一個獨立的開源軟件項目,是基於Java
開發的一種持續集成工具
,用於監控持續重複的工做,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。前身是Hudson,是一個可擴展的持續集成引擎。可用於自動化各類任務,如構建,測試和部署軟件
。插件
主要用於:code
持續、自動地構建項目、測試軟件項目等。
主要提供了基於版本管理工具(如CVS、VSS、SVN)感知變化
或天天定時的持續集成
,並提供持續集成報告
、Email
(提供豐富的插件庫)等方式通知相關負責人,其要求是須要進行日構建的項目已經編寫好全自動的項目編譯腳本(可基於Maven或Ant)。
監控一些定時執行的任務。
Jenkins特色
減小風險
越早發現的錯誤,修正的費用越低。
及時檢查軟件測試的健康情況,減小發布時的風險。
(好比:天天定時觸發自動化測試項目,自動生成報告)
減小重複性的工做
經過自動化的持續集成能夠將編譯、部署、測試等動做都變成自動化的,無需太多人工干預。
任什麼時候間,任何地點均可以部署軟件
利用持續集成,能夠常常對源代碼進行一些小改動,並將這些改動和其餘的代碼進行集成。若是出現問題,項目成員立刻就會被通知到。