本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,具體涉及一種持續(xù)集成服務(wù)器的配置信息的備份方法及系統(tǒng)。
背景技術(shù):
隨著軟件開發(fā)復(fù)雜度的不斷提高,團(tuán)隊(duì)開發(fā)成員間如何更好地協(xié)同工作以確保軟件開發(fā)的質(zhì)量已經(jīng)慢慢成為開發(fā)過程中不可回避的問題。尤其是近些年來,敏捷(Agile)在軟件工程領(lǐng)域越來越紅火,如何能在不斷變化的需求中快速適應(yīng)和保證軟件的質(zhì)量也顯得尤其的重要。持續(xù)集成(Continuous integration)正是針對(duì)這一類問題的一種軟件開發(fā)實(shí)踐。持續(xù)集成是一種軟件項(xiàng)目管理方法,依據(jù)資產(chǎn)庫(源碼,類庫等)的變更自動(dòng)完成編譯、測(cè)試、部署和反饋,為軟件產(chǎn)品提供了一個(gè)可以構(gòu)建編譯測(cè)試等任務(wù)的自動(dòng)化集成環(huán)境。通俗地講,持續(xù)集成指的是,頻繁地將代碼集成到主干。程序員在向版本庫中提交代碼后,CI持續(xù)集成服務(wù)器自動(dòng)發(fā)現(xiàn)或者定時(shí)發(fā)現(xiàn)變更,依據(jù)這些源碼,重新構(gòu)建產(chǎn)品的編譯、測(cè)試、審查、部署和反饋過程。其核心措施是,代碼集成到主干之前,必須通過自動(dòng)化測(cè)試。只要有一個(gè)測(cè)試用例失敗,就不能集成。每完成一點(diǎn)更新,就集成到主干,可以快速發(fā)現(xiàn)錯(cuò)誤和定位錯(cuò)誤。還可以防止分支大幅偏離主干。因此,持續(xù)集成可以幫助研發(fā)人員快速地集成代碼改動(dòng),幫助測(cè)試人員進(jìn)行自動(dòng)化軟件質(zhì)量測(cè)試,從而可以持續(xù)集成產(chǎn)品的代碼變動(dòng),縮短產(chǎn)品研發(fā)周期,使得產(chǎn)品可以快速迭代的同時(shí)還能保持高質(zhì)量,在軟件產(chǎn)品的生產(chǎn)環(huán)境發(fā)揮著至關(guān)重要的作用。
用于持續(xù)集成的工具需要搭建在特定的服務(wù)器上,該特定的服務(wù)器稱之為持續(xù)集成服務(wù)器。其中,對(duì)持續(xù)集成服務(wù)器上持續(xù)集成環(huán)境配置信息(持續(xù)集成工具應(yīng)用的配置信息,軟件編譯測(cè)試構(gòu)建任務(wù)的配置信息等)的備份,對(duì)于軟件產(chǎn)品的生產(chǎn)環(huán)境的遷移以及災(zāi)難恢復(fù)都有著重大的意義。由于集成環(huán)境構(gòu)建任務(wù)等配置信息隨著用戶的使用會(huì)有所改變,因此持續(xù)集成服務(wù)器配置信息需要定期備份。而備份周期間隔越短,備份內(nèi)容也就越接近真實(shí)環(huán)境。
目前對(duì)持續(xù)集成服務(wù)器配置信息的備份多使用插件備份和遠(yuǎn)程備份的方法。前者利用持續(xù)集成工具的內(nèi)置插件對(duì)限定的配置信息實(shí)現(xiàn)備份;后者使用同步工具(例如Rsync)把配置信息同步到遠(yuǎn)程服務(wù)器。兩種方法每次備份都需要對(duì)配置信息單獨(dú)歸檔,然后存放或者同步至備份服務(wù)器上。
在實(shí)現(xiàn)本發(fā)明過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題:無論是利用插件實(shí)現(xiàn)備份還是遠(yuǎn)程備份的方法,由于備份時(shí)都需要對(duì)配置信息進(jìn)行歸檔,例如每次將代碼提交到持續(xù)集成服務(wù)器上導(dǎo)致配置信息發(fā)生改變時(shí),均需要同步配置信息的存儲(chǔ)目錄(每提交一次代碼就備份一次),導(dǎo)致備份的內(nèi)容中有很多配置信息是大量重復(fù)的,因此會(huì)造成冗余備份和冗余存儲(chǔ)的問題。此外,每次歸檔的備份需要同步到遠(yuǎn)程備份服務(wù)器上,而冗余存儲(chǔ)和遠(yuǎn)程同步則會(huì)導(dǎo)致資源(CPU、內(nèi)存、存儲(chǔ)空間等)消耗過大,增加了系統(tǒng)負(fù)擔(dān)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種持續(xù)集成服務(wù)器的配置信息的備份方法及系統(tǒng),用以至少解決上述闡述的現(xiàn)有技術(shù)中對(duì)持續(xù)集成服務(wù)器配置信息的備份存在冗余備份的問題。
第一方面,本發(fā)明實(shí)施例提供了一種持續(xù)集成服務(wù)器的配置信息的備份方法,包括:
獲取持續(xù)集成應(yīng)用環(huán)境的當(dāng)前配置信息相關(guān)的當(dāng)前校驗(yàn)信息;
將所述當(dāng)前校驗(yàn)信息與本地倉庫中的最新的第一版本的歷史配置信息相關(guān)的歷史校驗(yàn)信息進(jìn)行比較;
當(dāng)所述當(dāng)前校驗(yàn)信息和所述歷史校驗(yàn)信息不同時(shí),將所述第一版本的歷史配置信息更新為第二版本的所述當(dāng)前配置信息;
基于所述第二版本的當(dāng)前配置信息生成第二版本的元數(shù)據(jù),將所述第二版本的元數(shù)據(jù)存儲(chǔ)至所述本地倉庫。
第二方面,本發(fā)明實(shí)施例提供了一種持續(xù)集成服務(wù)器的配置信息的備份系統(tǒng),包括:
校驗(yàn)信息獲取模塊,用于獲取持續(xù)集成應(yīng)用環(huán)境的當(dāng)前配置信息相關(guān)的當(dāng)前校驗(yàn)信息;
校驗(yàn)信息對(duì)比模塊,用于將所述當(dāng)前校驗(yàn)信息與本地倉庫中的最新的第一版本的歷史配置信息相關(guān)的歷史校驗(yàn)信息進(jìn)行比較;
配置信息更新模塊,用于在所述當(dāng)前校驗(yàn)信息和所述歷史校驗(yàn)信息不同時(shí),將所述第一版本的歷史配置信息更新為第二版本的所述當(dāng)前配置信息;
元數(shù)據(jù)存儲(chǔ)模塊,用于基于所述第二版本的當(dāng)前配置信息生成第二版本的元數(shù)據(jù),將所述第二版本的元數(shù)據(jù)存儲(chǔ)至所述本地倉庫。
第三方面,本發(fā)明實(shí)施例還提供了一種非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì),存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,所述計(jì)算機(jī)可執(zhí)行指令用于執(zhí)行本發(fā)明上述任一項(xiàng)持續(xù)集成服務(wù)器的配置信息的備份方法。
第四方面,本發(fā)明實(shí)施例還提供了一種電子設(shè)備,包括:至少一個(gè)處理器;以及存儲(chǔ)器;其中,所述存儲(chǔ)器存儲(chǔ)有可被所述至少一個(gè)處理器執(zhí)行的程序,所述指令被所述至少一個(gè)處理器執(zhí)行,以使所述至少一個(gè)處理器能夠執(zhí)行本發(fā)明上述任一項(xiàng)持續(xù)集成服務(wù)器的配置信息的備份方法。
第五方面,本發(fā)明實(shí)施例還提供了一種計(jì)算機(jī)程序產(chǎn)品,包括至少一個(gè)非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì),所述非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)具有存儲(chǔ)在其中的計(jì)算機(jī)可執(zhí)行程序代碼指令,所述計(jì)算機(jī)可執(zhí)行程序代碼指令能夠執(zhí)行上述任一項(xiàng)所述的持續(xù)集成服務(wù)器的配置信息的備份方法。
本發(fā)明實(shí)施例提供的持續(xù)集成服務(wù)器的配置信息的備份方法及系統(tǒng),通過將持續(xù)集成應(yīng)用環(huán)境的當(dāng)前配置信息與本地倉庫中最新版本的歷史配置信息進(jìn)行校驗(yàn)信息的比較,可以確定持續(xù)集成應(yīng)用環(huán)境生成的當(dāng)前配置信息是否和歷史配置信息相同,即當(dāng)前配置信息與歷史配置信息相比是否發(fā)生了變化;當(dāng)二者的校驗(yàn)信息不同時(shí),用當(dāng)前版本的當(dāng)前配置信息更新最新版本的歷史配置信息,由于只存儲(chǔ)發(fā)生了變更(當(dāng)前版本)的配置信息,可以減少本地倉庫中的存儲(chǔ)內(nèi)容,降低冗余備份的可能性,避免冗余備份對(duì)CPU、內(nèi)存、存儲(chǔ)空間等資源過高的消耗;在生成當(dāng)前版本的元數(shù)據(jù)后將當(dāng)前版本的元數(shù)據(jù)存儲(chǔ)在本地倉庫中,可以通過存儲(chǔ)的各版本的元數(shù)據(jù)及當(dāng)前版本的當(dāng)前配置信息進(jìn)行相應(yīng)的數(shù)據(jù)處理(例如數(shù)據(jù)回滾)得到所有版本的配置信息,使得本地倉庫減少冗余備份的同時(shí),能夠繼續(xù)對(duì)配置信息的各個(gè)版本進(jìn)行控制,提高了系統(tǒng)性能。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明一實(shí)施例的持續(xù)集成服務(wù)器的配置信息的備份方法的流程圖;
圖2是本發(fā)明另一實(shí)施例的持續(xù)集成服務(wù)器的配置信息的備份方法的流程圖;
圖3是本發(fā)明又一實(shí)施例的持續(xù)集成服務(wù)器的配置信息的備份方法的流程圖;
圖4是本發(fā)明再一實(shí)施例的持續(xù)集成服務(wù)器的配置信息的備份方法的流程圖;
圖5是本發(fā)明一實(shí)施例的持續(xù)集成服務(wù)器的配置信息的備份系統(tǒng)的結(jié)構(gòu)示意圖;
圖6是本發(fā)明一實(shí)施例提供的實(shí)施持續(xù)集成服務(wù)器的配置信息的備份方法的電子設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
需要說明的是,在不沖突的情況下,本發(fā)明中的實(shí)施方式及實(shí)施方式中的特征可以相互組合。
本發(fā)明可用于眾多通用或?qū)S玫挠?jì)算系統(tǒng)環(huán)境或配置中。例如:個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。
本發(fā)明可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本發(fā)明,在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”,不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
圖1是本發(fā)明一實(shí)施例的持續(xù)集成服務(wù)器的配置信息的備份方法的流程圖。如圖1所示,該方法包括:
S11:獲取持續(xù)集成應(yīng)用環(huán)境的當(dāng)前配置信息相關(guān)的當(dāng)前校驗(yàn)信息;
S12:;將所述當(dāng)前校驗(yàn)信息與本地倉庫中的最新的第一版本的歷史配置信息相關(guān)的歷史校驗(yàn)信息進(jìn)行比較
S13:當(dāng)所述當(dāng)前校驗(yàn)信息和所述歷史校驗(yàn)信息不同時(shí),將所述第一版本的歷史配置信息更新為第二版本的所述當(dāng)前配置信息;
S14:基于所述第二版本的當(dāng)前配置信息生成第二版本的元數(shù)據(jù),將所述第二版本的元數(shù)據(jù)存儲(chǔ)至所述本地倉庫。
持續(xù)集成應(yīng)用環(huán)境中,持續(xù)集成服務(wù)器(下文簡稱為服務(wù)器)在構(gòu)建項(xiàng)目的編譯、測(cè)試等任務(wù)時(shí),會(huì)在該項(xiàng)目的相應(yīng)目錄下生成相應(yīng)的配置信息。當(dāng)構(gòu)建的任務(wù)有變化時(shí),其生成的配置信息也會(huì)有變化。例如,構(gòu)建的任務(wù)與上一次相比數(shù)量增多了,則服務(wù)器在該項(xiàng)目的配置信息存儲(chǔ)目錄下生成的配置信息的數(shù)量(包括配置信息存儲(chǔ)目錄下的子目錄數(shù)量)也相應(yīng)增加。每次發(fā)生變化的構(gòu)建任務(wù)生成的配置信息可以存為一個(gè)版本。當(dāng)構(gòu)建的任務(wù)發(fā)生錯(cuò)誤從而想回退到未構(gòu)建本次任務(wù)的狀態(tài)時(shí),可以通過本地倉庫中的數(shù)據(jù)(包括源代碼、配置信息、日志鏈接等)回退到任意版本。其中,在進(jìn)行數(shù)據(jù)回退時(shí),數(shù)據(jù)(包括配置信息)的元數(shù)據(jù)必不可少。元數(shù)據(jù)至少包括但不限于構(gòu)建任務(wù)的提交者、構(gòu)建任務(wù)的時(shí)間戳(即提交時(shí)間)、數(shù)據(jù)的存儲(chǔ)目錄、指向上一版本的元數(shù)據(jù)的索引。因此,本發(fā)明實(shí)施例中用第二版本的當(dāng)前配置信息更新第一版本的歷史配置信息,可以基于第二版本的當(dāng)前配置信息和各個(gè)版本的元數(shù)據(jù)來得到各個(gè)版本的配置信息。
本發(fā)明實(shí)施例提供的持續(xù)集成服務(wù)器的配置信息的備份方法,通過將持續(xù)集成應(yīng)用環(huán)境的當(dāng)前配置信息與本地倉庫中第一版本(最新)的歷史配置信息進(jìn)行校驗(yàn)信息的比較,由于二者的校驗(yàn)信息相同表明當(dāng)前配置信息與歷史配置信息相比未發(fā)生變化,因此可以通過校驗(yàn)信息的比較確定是否要將持續(xù)集成應(yīng)用環(huán)境生成的當(dāng)前配置信息進(jìn)行備份;當(dāng)二者的校驗(yàn)信息不同時(shí),用第二版本(當(dāng)前版本)的當(dāng)前配置信息更新第一版本的歷史配置信息,由于服務(wù)器中只存儲(chǔ)發(fā)生變更(第二版本)的配置信息,可以減少本地倉庫中的存儲(chǔ)內(nèi)容,降低冗余備份的可能性;在生成第二版本的元數(shù)據(jù)后將第二版本的元數(shù)據(jù)存儲(chǔ)在本地倉庫中,可以通過對(duì)本地倉庫存儲(chǔ)的各版本的元數(shù)據(jù)及當(dāng)前版本的當(dāng)前配置信息進(jìn)行相應(yīng)的數(shù)據(jù)處理(例如數(shù)據(jù)回滾)得到所有版本的配置信息,使得本地倉庫減少冗余備份的同時(shí),能夠繼續(xù)對(duì)配置信息的各個(gè)版本進(jìn)行回退等控制,提高了持續(xù)集成系統(tǒng)的性能。
應(yīng)當(dāng)理解的是,本發(fā)明實(shí)施例也可以將當(dāng)前配置信息相關(guān)的當(dāng)前校驗(yàn)信息與本地倉庫中所有歷史版本的配置信息的校驗(yàn)信息進(jìn)行比較,從而保證服務(wù)器中配置信息的每一個(gè)版本均不相同,使得服務(wù)器冗余存儲(chǔ)的可能性更小。
圖2是本發(fā)明另一實(shí)施例的持續(xù)集成服務(wù)器的配置信息的備份方法的流程圖。如圖2所示,該方法除了包括圖1所示步驟外,還包括:
S15:當(dāng)所述當(dāng)前校驗(yàn)信息和所述歷史校驗(yàn)信息不同時(shí),確定所述當(dāng)前配置信息中與所述歷史配置信息相比的增量配置信息;
S16:至少將所述增量配置信息和所述第二版本的元數(shù)據(jù)發(fā)送至與所述本地倉庫關(guān)聯(lián)的遠(yuǎn)程倉庫。
圖1所示方法在服務(wù)器出現(xiàn)故障,而此時(shí)碰巧沒有備份或者備份不及時(shí),可能存在丟失數(shù)據(jù)的風(fēng)險(xiǎn)。因此,通過將配置信息備份至與本地倉庫關(guān)聯(lián)的遠(yuǎn)程倉庫,可以降低數(shù)據(jù)丟失的可能性。
本實(shí)施例在當(dāng)前校驗(yàn)信息和歷史校驗(yàn)信息不同,即當(dāng)前配置信息與歷史配置信息不完全相同的情況下,將當(dāng)前配置信息與所述歷史配置信息相比的增量配置信息(包括增加的、變更的配置信息)及第二版本的當(dāng)前配置信息的元數(shù)據(jù)發(fā)送至遠(yuǎn)程倉庫,與現(xiàn)有技術(shù)中將每個(gè)版本的配置信息均備份至遠(yuǎn)程倉庫相比,在能得到配置信息的各個(gè)版本的同時(shí),又大大減少了遠(yuǎn)程倉庫需要備份的配置信息的數(shù)量和大小,降低了對(duì)遠(yuǎn)程倉庫的空間大小的需求,從另一方面再次減少了系統(tǒng)的冗余備份,提高了系統(tǒng)性能。
應(yīng)當(dāng)說明的是,本實(shí)施例不受所描述的動(dòng)作順序的限制,例如上述實(shí)施例中步驟14和步驟15可以采用其他順序或者同時(shí)進(jìn)行。
圖3是本發(fā)明又一實(shí)施例的持續(xù)集成服務(wù)器的配置信息的備份方法的流程圖。如圖3所示,該方法在圖2所示S15當(dāng)所述當(dāng)前校驗(yàn)信息和所述歷史校驗(yàn)信息不同時(shí),確定所述當(dāng)前配置信息中與所述歷史配置信息相比的增量配置信息之后,包括:
S151:為所述增量配置信息及所述第二版本的元數(shù)據(jù)添加索引標(biāo)簽信息;
S16至少將所述增量配置信息和所述第二版本的元數(shù)據(jù)發(fā)送至與所述本地倉庫關(guān)聯(lián)的遠(yuǎn)程倉庫包括:
S161:將所述增量配置信息、所述第二版本的元數(shù)據(jù)連同所述索引標(biāo)簽信息發(fā)送至所述遠(yuǎn)程倉庫。
本實(shí)施例中,索引標(biāo)簽信息用于響應(yīng)數(shù)據(jù)恢復(fù)請(qǐng)求或數(shù)據(jù)回滾請(qǐng)求時(shí)對(duì)第二版本的當(dāng)前配置信息的查找。例如可以為第二版本和第一版本的增量配置信息以及第二版本的元數(shù)據(jù)賦予“公測(cè)版”“穩(wěn)定版”等標(biāo)簽,也可以添加便于理解本次構(gòu)建任務(wù)的標(biāo)簽,使得以后在查找配置信息的第二版本時(shí),可以通過添加的標(biāo)簽快捷方便地獲取到。本實(shí)施例提供的方法在需要對(duì)配置信息進(jìn)行數(shù)據(jù)恢復(fù)或數(shù)據(jù)回滾而配置信息的版本號(hào)或唯一標(biāo)識(shí)符字?jǐn)?shù)太長或太復(fù)雜時(shí)尤為有利。
作為上述實(shí)施例的進(jìn)一步說明,本發(fā)明實(shí)施例中至少通過計(jì)算配置信息的存儲(chǔ)目錄的哈希值確定與配置信息相關(guān)的校驗(yàn)信息。本實(shí)施例通過對(duì)配置信息的存儲(chǔ)目錄(包括目錄結(jié)構(gòu))進(jìn)行哈希計(jì)算得到哈希值(例如MD5值、SHA1值等),可以使配置信息(包括當(dāng)前配置信息和歷史配置信息)相關(guān)的校驗(yàn)信息唯一被確定,從而能夠更精確地判斷當(dāng)前配置信息與歷史配置信息相比是否發(fā)生了變化,進(jìn)一步減少系統(tǒng)冗余備份的可能性。
圖4是本發(fā)明再一實(shí)施例的持續(xù)集成服務(wù)器的配置信息的備份方法的流程圖。如圖4所示,在圖1、圖2或圖3所示步驟11獲取持續(xù)集成應(yīng)用環(huán)境的當(dāng)前配置信息相關(guān)的當(dāng)前校驗(yàn)信息之前,包括:
S10:提取符合過濾規(guī)則的持續(xù)集成應(yīng)用環(huán)境的當(dāng)前配置信息。
其中,過濾規(guī)則根據(jù)本地倉庫中設(shè)定的待備份配置信息類型確定。例如構(gòu)建任務(wù)在編譯過程中產(chǎn)生的中間文件就無需對(duì)其進(jìn)行備份。
本實(shí)施例中,通過過濾規(guī)則對(duì)持續(xù)集成應(yīng)用環(huán)境的配置信息進(jìn)行過濾,提取需要存儲(chǔ)至本地倉庫中的配置信息,可以靈活配置需要備份的內(nèi)容,減小了服務(wù)器將配置信息備份至本地倉庫的任務(wù)量,從而降低了冗余備份的可能性。
需要說明的是,對(duì)于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動(dòng)作合并,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
圖5是本發(fā)明一實(shí)施例的持續(xù)集成服務(wù)器的配置信息的備份系統(tǒng)的結(jié)構(gòu)示意圖。本發(fā)明所述的持續(xù)集成服務(wù)器的配置信息的備份方法可以基于本實(shí)施例中的持續(xù)集成服務(wù)器的配置信息的備份系統(tǒng)實(shí)施。如圖5所示,該系統(tǒng)包括校驗(yàn)信息獲取模塊51、校驗(yàn)信息對(duì)比模塊52、配置信息更新模塊53和元數(shù)據(jù)存儲(chǔ)模塊54。
校驗(yàn)信息獲取模塊51用于獲取持續(xù)集成應(yīng)用環(huán)境的當(dāng)前配置信息相關(guān)的當(dāng)前校驗(yàn)信息;
校驗(yàn)信息對(duì)比模塊52用于將所述當(dāng)前校驗(yàn)信息與本地倉庫中的最新的第一版本的歷史配置信息相關(guān)的歷史校驗(yàn)信息進(jìn)行比較;
配置信息更新模塊53用于在所述當(dāng)前校驗(yàn)信息和所述歷史校驗(yàn)信息不同時(shí),將所述第一版本的歷史配置信息更新為第二版本的所述當(dāng)前配置信息;
元數(shù)據(jù)存儲(chǔ)模塊54用于基于所述第二版本的當(dāng)前配置信息生成第二版本的元數(shù)據(jù),將所述第二版本的元數(shù)據(jù)存儲(chǔ)至所述本地倉庫。
本發(fā)明實(shí)施例提供的持續(xù)集成服務(wù)器的配置信息的備份系統(tǒng),在校驗(yàn)信息獲取模塊獲取持續(xù)集成應(yīng)用環(huán)境的當(dāng)前配置信息相關(guān)的當(dāng)前校驗(yàn)信息后,通過校驗(yàn)信息對(duì)比模塊將當(dāng)前配置信息與本地倉庫中第一版本(最新)的歷史配置信息進(jìn)行校驗(yàn)信息的比較;當(dāng)二者的校驗(yàn)信息不同時(shí),通過配置信息更新模塊來將第一版本的歷史配置信息更新為第二版本(當(dāng)前版本)的配置信息,由于服務(wù)器中只存儲(chǔ)發(fā)生了變更(第二版本)的配置信息,可以減少本地倉庫中的存儲(chǔ)內(nèi)容,降低冗余備份的可能性;元數(shù)據(jù)存儲(chǔ)模塊生成第二版本的元數(shù)據(jù)并將第二版本的元數(shù)據(jù)存儲(chǔ)在本地倉庫中,可以通過對(duì)本地倉庫存儲(chǔ)的各版本的元數(shù)據(jù)及當(dāng)前版本的當(dāng)前配置信息進(jìn)行相應(yīng)的數(shù)據(jù)處理(例如數(shù)據(jù)回滾)得到所有版本的配置信息,使得本地倉庫減少冗余備份的同時(shí),能夠繼續(xù)對(duì)配置信息的各個(gè)版本進(jìn)行回退等控制,提高了持續(xù)集成系統(tǒng)的性能。
本發(fā)明另一實(shí)施例的持續(xù)集成服務(wù)器的配置信息的備份系統(tǒng)中,該系統(tǒng)還包括:
增量配置信息確定模塊,用于在所述當(dāng)前校驗(yàn)信息和所述歷史校驗(yàn)信息不同時(shí),確定所述當(dāng)前配置信息中與所述歷史配置信息相比的增量配置信息;
遠(yuǎn)程備份模塊,用于至少將所述增量配置信息和所述第二版本的元數(shù)據(jù)發(fā)送至與所述本地倉庫關(guān)聯(lián)的遠(yuǎn)程倉庫。
本發(fā)明又一實(shí)施例的持續(xù)集成服務(wù)器的配置信息的備份系統(tǒng)中,該系統(tǒng)還包括標(biāo)簽添加模塊,用于為所述增量配置信息及所述第二版本的元數(shù)據(jù)添加索引標(biāo)簽信息;
所述遠(yuǎn)程備份模塊用于將所述增量配置信息、所述第二版本的元數(shù)據(jù)連同所述索引標(biāo)簽信息發(fā)送至所述遠(yuǎn)程倉庫。
作為上述實(shí)施例的進(jìn)一步說明,本發(fā)明實(shí)施例中至少通過計(jì)算配置信息的存儲(chǔ)目錄的哈希值確定配置信息相關(guān)的校驗(yàn)信息。
本發(fā)明再一實(shí)施例的持續(xù)集成服務(wù)器的配置信息的備份系統(tǒng)中,所述系統(tǒng)還包括配置信息過濾模塊,用于提取符合過濾規(guī)則的持續(xù)集成應(yīng)用環(huán)境的當(dāng)前配置信息,其中,過濾規(guī)則根據(jù)所述本地倉庫中設(shè)定的待備份配置信息類型確定。
本發(fā)明實(shí)施例提供了一種非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì),所述計(jì)算機(jī)存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,該計(jì)算機(jī)可執(zhí)行指令可執(zhí)行上述任意方法實(shí)施例中的持續(xù)集成服務(wù)器的配置信息的備份方法;
作為一種實(shí)施方式,本發(fā)明的非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,所述計(jì)算機(jī)可執(zhí)行指令設(shè)置為:
獲取持續(xù)集成應(yīng)用環(huán)境的當(dāng)前配置信息相關(guān)的當(dāng)前校驗(yàn)信息;
將所述當(dāng)前校驗(yàn)信息與本地倉庫中的最新的第一版本的歷史配置信息相關(guān)的歷史校驗(yàn)信息進(jìn)行比較;
當(dāng)所述當(dāng)前校驗(yàn)信息和所述歷史校驗(yàn)信息不同時(shí),將所述第一版本的歷史配置信息更新為第二版本的所述當(dāng)前配置信息;
基于所述第二版本的當(dāng)前配置信息生成第二版本的元數(shù)據(jù),將所述第二版本的元數(shù)據(jù)存儲(chǔ)至所述本地倉庫。
作為一種非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),可用于存儲(chǔ)非易失性軟件程序、非易失性計(jì)算機(jī)可執(zhí)行程序以及模塊,如本發(fā)明實(shí)施例中的持續(xù)集成服務(wù)器的配置信息的備份方法對(duì)應(yīng)的程序指令/模塊(例如,附圖5所示的校驗(yàn)信息獲取模塊51、校驗(yàn)信息對(duì)比模塊52、配置信息更新模塊53和元數(shù)據(jù)存儲(chǔ)模塊54)。所述一個(gè)或者多個(gè)模塊存儲(chǔ)在所述非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,當(dāng)被處理器執(zhí)行時(shí),執(zhí)行上述任意方法實(shí)施例中的持續(xù)集成服務(wù)器的配置信息的備份方法。
非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需要的應(yīng)用程序;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)持續(xù)集成服務(wù)器的配置信息的備份裝置的使用所創(chuàng)建的數(shù)據(jù)等。此外,非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤存儲(chǔ)器件、閃存器件、或其他非易失性固態(tài)存儲(chǔ)器件。在一些實(shí)施例中,非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可選包括相對(duì)于處理器遠(yuǎn)程設(shè)置的存儲(chǔ)器,這些遠(yuǎn)程存儲(chǔ)器可以通過網(wǎng)絡(luò)連接至持續(xù)集成服務(wù)器的配置信息的備份裝置。上述網(wǎng)絡(luò)的實(shí)例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動(dòng)通信網(wǎng)及其組合。
特別地,本發(fā)明還提供了一種計(jì)算機(jī)程序產(chǎn)品,包括至少一個(gè)非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì),所述非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)具有存儲(chǔ)在其中的計(jì)算機(jī)可執(zhí)行程序代碼指令,所述計(jì)算機(jī)可執(zhí)行程序代碼指令能夠執(zhí)行上述任意方法實(shí)施例中的持續(xù)集成服務(wù)器的配置信息的備份方法。
本發(fā)明實(shí)施例中可以通過硬件處理器(hardware processor)來實(shí)現(xiàn)相關(guān)功能模塊。
圖6是本發(fā)明一實(shí)施例提供的實(shí)施持續(xù)集成服務(wù)器的配置信息的備份方法的電子設(shè)備即持續(xù)集成服務(wù)器的結(jié)構(gòu)示意圖。如圖6所示,該設(shè)備包括:
一個(gè)或多個(gè)處理器610以及存儲(chǔ)器620,圖6中以一個(gè)處理器610為例。
持續(xù)集成服務(wù)器還可以包括:輸入裝置630和輸出裝置640。
處理器610、存儲(chǔ)器620、輸入裝置630和輸出裝置640可以通過總線或者其他方式連接,圖6中以通過總線連接為例。
存儲(chǔ)器620為上述的非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。處理器610通過運(yùn)行存儲(chǔ)在存儲(chǔ)器620中的非易失性軟件程序、指令以及模塊,從而執(zhí)行服務(wù)器的各種功能應(yīng)用以及數(shù)據(jù)處理,即實(shí)現(xiàn)上述方法實(shí)施例所示持續(xù)集成服務(wù)器的配置信息的備份方法。
輸入裝置630可接收輸入的數(shù)字或字符信息,以及產(chǎn)生與持續(xù)集成服務(wù)器的用戶設(shè)置以及功能控制有關(guān)的鍵信號(hào)輸入。輸出裝置640可包括顯示屏等顯示設(shè)備。
上述產(chǎn)品可執(zhí)行本發(fā)明實(shí)施例所提供的方法,具備執(zhí)行方法相應(yīng)的功能模塊和有益效果。未在本實(shí)施例中詳盡描述的技術(shù)細(xì)節(jié),可參見本發(fā)明實(shí)施例所提供的方法。
作為一種實(shí)施方式,上述電子設(shè)備包括:至少一個(gè)處理器;以及,與所述至少一個(gè)處理器通信連接的存儲(chǔ)器;其中,所述存儲(chǔ)器存儲(chǔ)有可被所述至少一個(gè)處理器執(zhí)行的指令,所述指令被所述至少一個(gè)處理器執(zhí)行,以使所述至少一個(gè)處理器能夠:
獲取持續(xù)集成應(yīng)用環(huán)境的當(dāng)前配置信息相關(guān)的當(dāng)前校驗(yàn)信息;
將所述當(dāng)前校驗(yàn)信息與本地倉庫中的最新的第一版本的歷史配置信息相關(guān)的歷史校驗(yàn)信息進(jìn)行比較;
當(dāng)所述當(dāng)前校驗(yàn)信息和所述歷史校驗(yàn)信息不同時(shí),將所述第一版本的歷史配置信息更新為第二版本的所述當(dāng)前配置信息;
基于所述第二版本的當(dāng)前配置信息生成第二版本的元數(shù)據(jù),將所述第二版本的元數(shù)據(jù)存儲(chǔ)至所述本地倉庫。
本發(fā)明實(shí)施例的電子設(shè)備以多種形式存在,包括但不限于:
(1)移動(dòng)通信設(shè)備:這類設(shè)備的特點(diǎn)是具備移動(dòng)通信功能,并且以提供話音、數(shù)據(jù)通信為主要目標(biāo)。這類終端包括:智能手機(jī)(例如iPhone)、多媒體手機(jī)、功能性手機(jī),以及低端手機(jī)等。
(2)超移動(dòng)個(gè)人計(jì)算機(jī)設(shè)備:這類設(shè)備屬于個(gè)人計(jì)算機(jī)的范疇,有計(jì)算和處理功能,一般也具備移動(dòng)上網(wǎng)特性。這類終端包括:PDA、MID和UMPC設(shè)備等,例如iPad。
(3)服務(wù)器:提供計(jì)算服務(wù)的設(shè)備,服務(wù)器的構(gòu)成包括處理器、硬盤、內(nèi)存、系統(tǒng)總線等,服務(wù)器和通用的計(jì)算機(jī)架構(gòu)類似,但是由于需要提供高可靠的服務(wù),因此在處理能力、穩(wěn)定性、可靠性、安全性、可擴(kuò)展性、可管理性等方面要求較高。
(4)其他具有數(shù)據(jù)交互功能的電子裝置。
以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。
通過以上的實(shí)施例的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施例可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器和光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。