svn增量打包部署_持续集成、持续交付、持续部署(CI/CD)简介
》》》推薦閱讀《《《
1、性能測試學習筆記-場景設計
2、性能測試的重要意義
3、性能分析流程及方法
4、應用系統性能調優之性能分析
概述:
軟件開發周期中需要一些可以幫助開發者提升速度的自動化工具。其中工具最重要的目的是促進軟件項目的持續集成與交付。通過CI/CD工具,開發團隊可以保持軟件更新并將其迅速的投入實踐中。CI/CD也被認為是敏捷開發的最重要實踐之一。
一 、持續集成
從上圖可以看到,持續集成應該至少包括以下幾部分:
自動化構建Continuous Build
自動化測試Continuous Test
自動化集成Continuous Intergration
自動化構建
包括以下過程:
將源碼編譯成為二進制碼
打包二進制碼
運行自動化測試
生成文檔
生成分發媒體(例如:Debian DEB、Red Hat RPM或者Windows MSI文件)
所以,自動化構建,從功能角度分,最關鍵的是三部分:版本控制工具、構建工具、CI服務器。而其中最核心的又是構建工具。其他開源的、與持續集成相關的工具也有很多,但大多數是輔助性的工具。
(1)版本控制工具
有時,版本控制又稱為配置管理(SCM),所以版本控制工具同時也是配置管理工具。在各類版本控制的開源軟件中,最著名的莫過于CVS、SVN(Subversion)、GIT三個了。
這三個工具各有千秋。其中,GIT支持離線工作,更適合開源軟件或者開發人員不能集中辦公情況下的版本管理工作。同時,SVN和GIT可以配合使用。
(2)構建工具
構建工具是持續集成的核心,它對源代碼進行自動化編譯、測試、代碼檢查,以及打包程序、部署(發布)到應用服務器上。從配置管理工具上下載最新源代碼后,所有的后續工作幾乎都可以通過構建工具完成。
在java開發中,比較有名的構建工具就是Ant、Maven、Gradle。在PHP開發中,Phing(基于Ant)也比較有名。同樣的,Maven也可通過相關的PHP-Maven插件完成對PHP開發構建的支持。
(3)CI服務器
CI服務器的主要作用就是提供一個平臺,用于整合版本控制和構建工作,并管理、控制自動化的持續集成。
開源軟件中,比較有名的CI服務器包括Jenkins、CruiseControl、Continuum。而比較有名的商業化CI服務器是TeamCity、Bamboo、Pulse等。
(4)其他工具
很多工具可以通過與構建工具、CI工具相結合(當然,其中有很多工具也可以單獨工作),來完成更多的自動測試、報告生成等工作。根據工具不同,其具體的結合方法也不同,但大體都是通過插件形式進行結合的。例如:
Maven中通過依賴和plugin方式引入第三方工具
Jenkins主要通過各類插件引入第三方工具
這些工具種類實在太多,可以根據實際工作需要進行選擇。
2.自動化測試
自動化測試是持續集成必不可少的一部分,基本上,沒有自動化測試的持續集成,都很難稱之為真正的持續集成。我們希望持續集成能夠盡早的暴露問題,但這遠非配置一個 Hudson/Jenkins服務器那么簡單,只有真正用心編寫了較為完整的測試用例,并一直維護它們,持續集成才能孜孜不倦地運行測試并第一時間報告問題。
測試自動化是使用特定的軟件(獨立于被測試的軟件)來控制測試的執行以及比較實際輸出與預期輸出。測試自動化可以將某些重復但必要的任務自動化,或者執行某些難以手動執行的額外測試。
自動化測試還包括單元測試、集成測試、系統測試、驗收測試、性能測試等,在不同的場景下,它們都能為軟件開發帶來極大的價值。
二、持續交付
持續交付(Continuous Delivery, CD)是一種軟件工程的手段,讓軟件在短周期內產出,確保軟件隨時可以被可靠地發布。其目的在于更快、更頻繁地構建、測試以及發布軟件。通過加強對生產環境的應用進行漸進式更新,這種手段可以降低交付變更的成本與風險。一個簡單直觀的與可重復的部署過程對于持續交付來說是很重要的。
三、持續部署
如圖所示,持續部署與持續交付之間的差異就是前者將部署自動化了。
在持續交付的實踐中,交付的目標是QA,但是實際上,軟件最終是要交付到客戶手上的。在SaaS領域里,持續部署采用得比較廣泛,因為服務比較容易做到靜默升級。
采用持續部署的前提是自動化測試的覆蓋率足夠高。
采用持續部署的好處是能減少運維的工作量,縮短新特性從開發到實際交付的周期。
四、CI/CD具體實現
常見CI/CD工具及其比較:
這里的支持,意思應該是直接的支持,例如Jenkins,其實和git結合也很簡單,通過腳本就可以實現。
五、持續集成工具集之 Jenkins簡介
Jenkins 是一個可擴展的持續集成引擎。
1.主要用于:
持續、自動地構建/測試軟件項目。
監控一些定時執行的任務。Jenkins擁有的特性包括:
2.Jenkins擁有的特性包括:
易于安裝-只要把jenkins.war部署到servlet容器,不需要數據庫支持。
易于配置-所有配置都是通過其提供的web界面實現。
集成RSS/E-mail通過RSS發布構建結果或當構建完成時通過e-mail通知。
生成JUnit/TestNG測試報告
分布式構建支持Jenkins能夠讓多臺計算機一起構建/測試。
文件識別:Jenkins能夠跟蹤哪次構建生成哪些jar,哪次構建使用哪個版本的jar等。
插件支持:支持擴展插件,你可以開發適合自己團隊使用的工具。
3.Jenkins的出現
目前持續集成(CI)已成為當前許多軟件開發團隊在整個軟件開發生命周期內側重于保證代碼質量的常見做法。它是一種實踐,旨在緩和和穩固軟件的構建過程。并且能夠幫助您的開發團隊應對如下挑戰:
軟件構建自動化 :配置完成后,CI系統會依照預先制定的時間表,或者針對某特定事件,對目標軟件進行構建。
構建可持續的自動化檢查 :CI系統能持續地獲取新增或修改后簽入的源代碼,也就是說,當軟件開發團隊需要周期性的檢查新增或修改后的代碼時,CI系統會不斷確認這些新代碼是否破壞了原有軟件的成功構建。這減少了開發者們在檢查彼此相互依存的代碼中變化情況需要花費的時間和精力。
構建可持續的自動化測試 :構建檢查的擴展部分,構建后執行預先制定的一套測試規則,完成后觸發通知(Email,RSS等等)給相關的當事人。
生成后后續過程的自動化 :當自動化檢查和測試成功完成,軟件構建的周期中可能也需要一些額外的任務,諸如生成文檔、打包軟件、部署構件到一個運行環境或者軟件倉庫。這樣,構件才能更迅速地提供給用戶使用。
部署一個CI系統需要的最低要求是,一個可獲取的源代碼的倉庫,一個包含構建腳本的項目。
下圖概括了CI系統的基本結構:
4.使用Jenkins的一些理由:
該系統的各個組成部分是按如下順序來發揮作用的:
開發者檢入代碼到源代碼倉庫。
CI系統會為每一個項目創建了一個單獨的工作區。當預設或請求一次新的構建時,它將把源代碼倉庫的源碼存放到對應的工作區。
CI系統會在對應的工作區內執行構建過程。
(配置如果存在)構建完成后,CI系統會在一個新的構件中執行定義的一套測試。完成后觸發通知(Email,RSS等等)給相關的當事人。
(配置如果存在)如果構建成功,這個構件會被打包并轉移到一個部署目標(如應用服務器)或存儲為軟件倉庫中的一個新版本。軟件倉庫可以是CI系統的一部分,也可以是一個外部的倉庫,諸如一個文件服務器或者像Java.NET、 SourceForge之類的網站。
CI系統通常會根據請求發起相應的操作,諸如即時構建、生成報告,或者檢索一些構建好的構件。
Jenkins就是這么一個CI系統。之前叫做Hudson。
是所有CI產品中在安裝和配置上最簡單
基于Web訪問,用戶界面非常友好、直觀和靈活,在許多情況下,還提供了AJAX的即時反饋。
Jenkins是基于Java開發的(如果你是一個Java開發人員,這是非常有用的),但它不僅限于構建基于Java的軟件。
Jenkins擁有大量的插件。這些插件極大的擴展了Jenkins的功能;它們都是開源的,而且它們可以直接通過web界面來進行安裝與管理。
5.Jenkins的目標
Jenkins的主要目標是監控軟件開發流程,快速顯示問題。所以能保證開發人員以及相關人員省時省力提高開發效率。
CI系統在整個開發過程中的主要作用是控制:當系統在代碼存儲庫中探測到修改時,它將運行構建的任務委托給構建過程本身。如果構建失敗了,那么CI系統將通知相關人員,然后繼續監視存儲庫。它的角色看起來是被動的;但它確能快速反映問題。
特別是它具有以下優點:
Jenkins一切配置都可以在web界面上完成。有些配置如MAVEN_HOME和Email,只需要配置一次,所有的項目就都能用。當然也可以通過修改XML進行配置。
支持Maven的模塊(Module),Jenkins對Maven做了優化,因此它能自動識別Module,每個Module可以配置成一個job。相當靈活。
測試報告聚合,所有模塊的測試報告都被聚合在一起,結果一目了然,使用其他CI,這幾乎是件不可能完成的任務。
構件指紋(artifact fingerprint),每次build的結果構件都被很好的自動管理,無需任何配置就可以方便的瀏覽下載。
》》》推薦閱讀《《《
1、性能測試學習筆記-場景設計
2、Web站點性能調優完全攻略
3、應用系統性能調優之性能分析
4、Windows監控——性能指標詳解
6、性能測試的重要意義
7、軟件性能測試的本質_致命版
8、性能分析流程及方法
9、性能測試流程
10、性能測試從需求分析開始
11、性能測試指標
12、雙活數據中心揭秘之—DB2 PureScale
13、循序漸進學習oracle
14、軟件項目管理中的十個誤區
15、功能測試方法總結及常見面試問題
16、MQ來賬通道及隊列配置
17、Linux命令大全整理
18、JMeter工具簡單介紹
19、性能瓶頸分析方法
20、性能測試-LoadRunner操作流程之一
22、性能測試-LoadRunner操作流程之二
23、性能測試-LoadRunner操作流程之三
24、性能測試-腳本編寫之一
25、性能測試-腳本編寫之二
26、性能測試-腳本編寫之三
27、性能測試-性能調優之一
28、性能測試-性能調優之二
總結
以上是生活随笔為你收集整理的svn增量打包部署_持续集成、持续交付、持续部署(CI/CD)简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全包,装修一套房子到底要花多少钱才合适?
- 下一篇: 十四五规划对郑州房价的影响