基于容器化的持續(xù)集成系統(tǒng)_第1頁(yè)
基于容器化的持續(xù)集成系統(tǒng)_第2頁(yè)
基于容器化的持續(xù)集成系統(tǒng)_第3頁(yè)
基于容器化的持續(xù)集成系統(tǒng)_第4頁(yè)
基于容器化的持續(xù)集成系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于容器化的持續(xù)集成系統(tǒng)摘要:隨著軟件復(fù)雜度的增加和項(xiàng)目需求的變化,快速持續(xù)、高質(zhì)量的實(shí)現(xiàn)應(yīng)用交付成為開發(fā)的主要目標(biāo)。傳統(tǒng)軟件構(gòu)建方法缺乏團(tuán)隊(duì)的協(xié)同性和標(biāo)準(zhǔn)化的流程管理,往往需要投入大量的時(shí)間和成本來(lái)保障軟件質(zhì)量。為解決時(shí)間、質(zhì)量和成本三者之間的矛盾,研究搭建一個(gè)基于Jenkins的持續(xù)集成構(gòu)建系統(tǒng),并利用Docker技術(shù)將持續(xù)集成平臺(tái)容器化,標(biāo)準(zhǔn)化軟件環(huán)境。實(shí)驗(yàn)表明容器化將搭建環(huán)境的復(fù)雜度降低90%以上,提高了應(yīng)用測(cè)試環(huán)境的可移植性和多樣性,大大提升軟件開發(fā)效率。關(guān)鍵詞 軟件構(gòu)建;持續(xù)集成;容器化;DevOps隨著軟件項(xiàng)目規(guī)模逐漸擴(kuò)大,市場(chǎng)需求不穩(wěn)定,軟件產(chǎn)品需要快速持續(xù)高質(zhì)量的實(shí)現(xiàn)軟件交付

2、,從而更好地應(yīng)對(duì)市場(chǎng)及用戶的需求。 軟件構(gòu)建是軟件生命周期的關(guān)鍵環(huán)節(jié),包含從源碼編譯到產(chǎn)品交付的整個(gè)過(guò)程。但缺乏規(guī)范化和標(biāo)準(zhǔn)化的軟件構(gòu)建流程往往成為影響軟件交付的瓶頸所在,敏捷開發(fā)和 DevOps 思想理念的產(chǎn)生很好地解決了這一問(wèn)題。以迭代開發(fā)為特征的敏捷開發(fā),靈活應(yīng)對(duì)不斷變化的需求,大大提高了開發(fā)效率。持續(xù)集成 構(gòu)建作為敏捷開發(fā)中的一項(xiàng)基本實(shí)踐l 將開發(fā)周期的集成階段放到日常中,開發(fā)者每天都會(huì)集成代碼,通過(guò)自動(dòng)化的構(gòu)建和測(cè)試盡早定位軟件缺陷,降低開發(fā)風(fēng)險(xiǎn)。 DevOps 思想2 是一 組流 程、技術(shù)和工具的統(tǒng)稱,促進(jìn)了開發(fā)、技術(shù)運(yùn)營(yíng)和質(zhì)址保障部門之間的溝通協(xié)作,提供端到端的測(cè)試、交付和發(fā)布工

3、作流。各軟件企業(yè)和相關(guān)研究人員對(duì)迭代式開發(fā)、持續(xù)集成等實(shí)踐不斷地研究嘗試,促進(jìn)了軟件開發(fā)模式的發(fā)展,開發(fā)效率也在不斷提升。雖然相關(guān)研究實(shí)踐能夠一定程度提高開發(fā)效率,但硬件資源的分配與限制是影響開發(fā)周期的另一個(gè)因 素。本文的研究目的是將持續(xù)集成構(gòu)建和容器技術(shù)相結(jié)合,應(yīng)用在項(xiàng)目開發(fā)中,利用容器技術(shù)對(duì)硬件資源的分配特性,研究如何標(biāo)準(zhǔn)化環(huán)境從而重復(fù)、循環(huán)地交付軟件價(jià)值。本文總結(jié)國(guó)內(nèi)外研究人員對(duì)敏捷開發(fā)中的持Docker 一個(gè)容器化的持續(xù)集成構(gòu)建系統(tǒng)(簡(jiǎn)稱CCI), 通過(guò)設(shè)計(jì)系統(tǒng)的一體化工作流方案,使各團(tuán)隊(duì)成員之間相互協(xié)作,優(yōu)化軟件開發(fā)流程。最后通過(guò)具體應(yīng)用對(duì)系統(tǒng)平臺(tái)進(jìn)行分析和驗(yàn)證。l 相關(guān)工作1. 1

4、 持續(xù)集成的相關(guān)研究不少國(guó)內(nèi)外研究人員對(duì)敏捷開發(fā)中的迭代式開發(fā)和持續(xù)集成等實(shí)踐展開深入的研究,促進(jìn)了軟件開發(fā)模式的轉(zhuǎn)變和發(fā)展。Lai 和 Leu l3l 總結(jié)敏捷開發(fā)和持續(xù)集成的優(yōu)勢(shì),提出一種持續(xù)集成過(guò)程以有效降低Web 應(yīng)用的開發(fā)風(fēng)險(xiǎn)。Meyer l4l 論述實(shí)現(xiàn)一個(gè)持續(xù)集成系統(tǒng)的關(guān)鍵要素包括版本控制系統(tǒng)和持續(xù)集成服務(wù)器。使用版本控制系統(tǒng),改變了開發(fā)人員之間的合作交流和協(xié)作模式,使不同團(tuán)隊(duì)之間可以更好地相 互 5 。Seth 和 Khare 討論版本控制系統(tǒng)在軟件開發(fā)中的重要作用和分布式版本控制系統(tǒng)Jenkins 是一個(gè)開源的持續(xù)集成服務(wù)器,支持分布式構(gòu)建。Rai 等7 討論 Jenkins

5、 的背景和發(fā)展歷史,提供安裝和配置 Jenkins 的方法,同時(shí)對(duì)比分析其他相關(guān)持續(xù)集成工具的優(yōu)缺點(diǎn)。Jenkins 不僅提供豐富的插件支持,有可擴(kuò)展的對(duì)象模型, 這一特性使得可以定制化地開發(fā)插件以擴(kuò)展Jenkins 的功能。另外,Jenkins 工具除可以實(shí)現(xiàn)持續(xù)集成外,還可以實(shí)現(xiàn)持續(xù)交付。Armenise s J提出 Jenkins 不僅能夠提供自動(dòng)化的構(gòu)建實(shí)現(xiàn)持續(xù)集成,還可以通過(guò)豐富的插件機(jī)制實(shí)現(xiàn)產(chǎn)品的發(fā) 布、部署,從而實(shí)現(xiàn)軟件的持續(xù)交付。1.2 虛擬化容器技術(shù)的發(fā)展可重復(fù)性實(shí)驗(yàn)在科學(xué)領(lǐng)域中得到越來(lái)越多的關(guān)注9 為解決實(shí)驗(yàn)環(huán)境的可復(fù)用性和實(shí)驗(yàn)數(shù)據(jù)的可再現(xiàn)性,出現(xiàn)了兩個(gè)主流的解決方案:工作

6、流 (Workflow10-11一個(gè)好的方法,但是它也有自一一個(gè)完整的操作系境系統(tǒng)維護(hù)性和靈活性比較差且不易擴(kuò)展10不容易實(shí)現(xiàn)環(huán)境的可復(fù)現(xiàn)性。Docker 的出現(xiàn),引起業(yè)界很大的反響,受到廣泛關(guān)注。它是一個(gè)開源的應(yīng)用容 器引擎,與傳統(tǒng)虛擬機(jī)的主要不同之處在于它共 享宿主機(jī)的 Linux Docker 容器的虛擬化是建立在主機(jī)的操作系統(tǒng)之上的,是系統(tǒng)級(jí)的虛擬化而不是針對(duì)硬件虛擬化,虛擬鏡像的移植性比傳統(tǒng)基于硬件的虛擬化移植性要強(qiáng)。這使它比傳統(tǒng)虛擬機(jī)輕撒且具有高性能 12與傳統(tǒng)虛擬機(jī)分鐘級(jí)的啟動(dòng)速度相比,Docker 啟動(dòng)速度達(dá)到秒級(jí)。傳統(tǒng)的計(jì)算機(jī)能夠同時(shí)運(yùn)行幾個(gè)虛擬機(jī),但卻能夠同時(shí)運(yùn)行上百個(gè)甚至

7、更多 Docker 容器。Boettiger 10l 論述 Docker在可重復(fù)性研究中發(fā)揮的重要作用,它解決了計(jì)算重復(fù)性所面臨的技術(shù)挑戰(zhàn)。在集群、云環(huán)境等分布式系統(tǒng)中使用 Docker 技術(shù)可以使底層應(yīng)用環(huán)境保持一致性, 增加系統(tǒng)的可移植性13 。另外,Docker 在持續(xù)集成和軟件測(cè)試領(lǐng)域應(yīng)用也很廣泛。例如,與性能測(cè)試工具結(jié)合,保證實(shí)驗(yàn)環(huán)境的可復(fù)用性和數(shù)據(jù)的可再現(xiàn)性 14 。基于容器的虛擬化技術(shù),利用增散的方式生成鏡像環(huán)境,靈活性更高。根據(jù) Docker 的特性,將其應(yīng)用到軟件項(xiàng)目的生命周期(升發(fā)、測(cè)試、部署、維護(hù)),能有效地提高各個(gè)環(huán)節(jié)的效率。持續(xù)集成系統(tǒng)組成持續(xù)集成(Cl)系統(tǒng)的核心價(jià)

8、值在于自動(dòng)化, 服務(wù)器的每次集成都是通過(guò)自動(dòng)化的構(gòu)建來(lái)驗(yàn)證,包括自動(dòng)編譯測(cè)試部署等。 個(gè)傳統(tǒng)的持續(xù)集成系統(tǒng)通常有3個(gè)組成部分(I實(shí)現(xiàn)代碼托管的版本控制系統(tǒng),執(zhí)行集成構(gòu)建的持續(xù)集成服務(wù)器和自動(dòng)構(gòu)建編譯的工具。版本控制系統(tǒng)版本控制系統(tǒng)在項(xiàng)目不同團(tuán)隊(duì)開發(fā)入員之間 維護(hù)一 個(gè)統(tǒng)一的代碼庫(kù),實(shí)現(xiàn)項(xiàng)目的協(xié)同開發(fā)保證項(xiàng)目的源代碼處千有序的管理中,方便項(xiàng)目升發(fā)人員隨時(shí)獲取和提交變更。 在持續(xù)集成系統(tǒng)中,版本控制系統(tǒng)起到的主要作用是源代碼的 管理。持續(xù)集成服務(wù)器持續(xù)集成服務(wù)器在整個(gè)系統(tǒng)中起到至關(guān)重要 的作用,連通各個(gè)部分的基本組件,是實(shí)現(xiàn)過(guò)程自動(dòng)化的關(guān)鍵當(dāng)開發(fā)者提交代碼到版本庫(kù)中,服務(wù)器輪詢到變更,便會(huì)觸發(fā)自動(dòng)

9、構(gòu)建工具,進(jìn)入到后續(xù)的自動(dòng)化構(gòu)建過(guò)程這自動(dòng)化過(guò)程使開發(fā)人員能夠快速收到Bug和相關(guān)故障的反饋通知, 快速修復(fù)軟件質(zhì)蜇的缺陷,從而及時(shí)交付軟件 。自動(dòng)編譯構(gòu)建工具在自動(dòng)化編譯構(gòu)建工具引入之前,項(xiàng)目人員需要進(jìn)行一系列手動(dòng)的過(guò)程,下載源碼、編譯、測(cè)試、部署。 手動(dòng)構(gòu)建不僅浪費(fèi)大拭的人力進(jìn)行重復(fù)性的工作,而且容易引入人為因素導(dǎo)致的錯(cuò)誤。自動(dòng)化的編譯構(gòu)建工具對(duì)于持續(xù)集成系統(tǒng)是不可或缺的,是實(shí)現(xiàn)系統(tǒng)自動(dòng)化的前提。 持續(xù)集成服務(wù)器集成構(gòu)建工具完成構(gòu)建任務(wù),實(shí)現(xiàn)項(xiàng)目的自動(dòng)化構(gòu)建、測(cè)試、部署流程。存在的問(wèn)題在傳統(tǒng)的持續(xù)集成系統(tǒng)中,基本解放人力, 實(shí)現(xiàn)了自動(dòng)化,但仍然存在一些不足之處。I)環(huán)境的搭建、細(xì)護(hù)比較復(fù)雜

10、且耗時(shí)。 持續(xù)集成環(huán)境、開發(fā)測(cè)試環(huán)境的搭建盂要在本地完成種類繁多的軟件安裝和配置,是一 ftj非常復(fù)雜且耗時(shí)的工作,目環(huán)境移植性比較差。2)開發(fā)環(huán)境、測(cè)試環(huán)境和生產(chǎn)環(huán)境不一 致。維護(hù)不一致的環(huán)境 , 影響軟件的交付效率。 另 一方面容易導(dǎo)致在生產(chǎn)環(huán)境中暴露出升發(fā)i則試環(huán)境沒(méi)有出現(xiàn)的錯(cuò)誤。3)集成構(gòu)建過(guò)程觸發(fā)單元測(cè)試、集成i則試, 但沒(méi)有考慮其他方面的測(cè)試,不方便測(cè)試人員開展工作。CCI 容器化實(shí)現(xiàn)31系統(tǒng)架構(gòu)Cithub 作為版本控制系統(tǒng),Jenkins 工具作為持續(xù)集成服務(wù)器。與傳統(tǒng)集成平臺(tái)相比,將安裝在宿主機(jī)本地或虛擬機(jī)中的集成環(huán)境進(jìn)行容器化,將集成服務(wù)器主從節(jié)點(diǎn)分別放在不同的容器環(huán)境中。 利用Jenkins 的分布式特性, 將 Jenkins 主服務(wù)器(Master 節(jié)點(diǎn))Jenkins 從服務(wù)器(Slave 節(jié)點(diǎn))分Docke1 器2 所示。Jenkins 主機(jī)器負(fù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論