,使得各業(yè)務(wù)服務(wù)器將該測(cè)試用例和該應(yīng)用一并存入上述部署目錄中,各業(yè)務(wù)服務(wù)器自動(dòng)啟動(dòng)運(yùn)行該測(cè)試用例對(duì)該應(yīng)用進(jìn)行測(cè)試。該自動(dòng)部署和測(cè)試過程中,無需人工干預(yù),避免人工部署、測(cè)試容易出錯(cuò)的問題,提高應(yīng)用部署和測(cè)試效率的同時(shí),保證了應(yīng)用部署和測(cè)試的可靠性。
[0082]應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
【附圖說明】
[0083]此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實(shí)施例,并與說明書一起用于解釋本公開的原理。
[0084]圖1是本公開一示例性實(shí)施例示出的應(yīng)用場(chǎng)景示意圖;
[0085]圖2是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署方法實(shí)施例一的流程圖;
[0086]圖3是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署方法實(shí)施例二的流程圖;
[0087]圖4是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署方法的實(shí)施例三的流程圖;
[0088]圖5是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署方法的實(shí)施例四的流程圖;
[0089]圖6是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署方法的實(shí)施例五的流程圖;
[0090]圖7是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署方法的信令交互圖;
[0091]圖8是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署管理服務(wù)器實(shí)施例一的框圖;
[0092]圖9是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署管理服務(wù)器實(shí)施例二的框圖;
[0093]圖10是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署管理服務(wù)器實(shí)施例三的框圖;
[0094]圖11是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署業(yè)務(wù)服務(wù)器實(shí)施例一的框圖;
[0095]圖12是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署業(yè)務(wù)服務(wù)器實(shí)施例二的框圖;
[0096]圖13是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署管理服務(wù)器的框圖;
[0097]圖14是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署業(yè)務(wù)服務(wù)器的框圖;
[0098]圖15是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署管理服務(wù)器的框圖;
[0099]圖16是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署業(yè)務(wù)服務(wù)器的框圖。
[0100]通過上述附圖,已示出本公開明確的實(shí)施例,后文中將有更詳細(xì)的描述。這些附圖和文字描述并不是為了通過任何方式限制本公開構(gòu)思的范圍,而是通過參考特定實(shí)施例為本領(lǐng)域技術(shù)人員說明本公開的概念。
【具體實(shí)施方式】
[0101]這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本公開相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本公開的一些方面相一致的裝置和方法的例子。
[0102]首先,先介紹本公開各實(shí)施例所適用的應(yīng)用場(chǎng)景。
[0103]圖1是本公開一示例性實(shí)施例示出的應(yīng)用場(chǎng)景示意圖,如圖1所示,本公開各實(shí)施例提高的應(yīng)用部署方法是適用于分布式系統(tǒng)中的應(yīng)用分布式部署場(chǎng)景。該分布式系統(tǒng)中包括如圖1所示的N個(gè)業(yè)務(wù)服務(wù)器和一個(gè)管理服務(wù)器,其中N為大于I的整數(shù)。其中,該管理服務(wù)器從功能上可以拆分為兩個(gè)獨(dú)立的服務(wù)器,分別為代碼服務(wù)器和編譯服務(wù)器。這兩個(gè)服務(wù)器可以分別獨(dú)立設(shè)置,也可以集成設(shè)置在一起構(gòu)成上述管理服務(wù)器。由于該管理服務(wù)器的具體實(shí)現(xiàn)形式對(duì)本公開實(shí)施例的應(yīng)用部署方法影響不大,因此,以下各實(shí)施例中除圖2所示實(shí)施例中特別說明外,均以管理服務(wù)器整體的形式來描述,不具體區(qū)分為代碼服務(wù)器和編譯服務(wù)器。
[0104]下面結(jié)合各個(gè)具體的實(shí)施例對(duì)本公開應(yīng)用部署方法進(jìn)行詳細(xì)介紹。
[0105]圖2是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署方法實(shí)施例一的流程圖,如圖2所示,本實(shí)施例涉及的應(yīng)用部署方法可以由圖1所示中的管理服務(wù)器來執(zhí)行。具體的,該應(yīng)用部署方法包括以下步驟:
[0106]在步驟SlOl中,接收應(yīng)用部署指令,獲取待部署應(yīng)用,所述待部署應(yīng)用中包括源代碼和配置文件,所述配置文件中包含所述待部署應(yīng)用的部署目錄。
[0107]在步驟S102中,獲取與所述待部署應(yīng)用對(duì)應(yīng)的測(cè)試用例。
[0108]在步驟S103中,對(duì)所述待部署應(yīng)用進(jìn)行編譯。
[0109]在步驟S104中,將編譯后的待部署應(yīng)用和所述測(cè)試用例發(fā)送給各業(yè)務(wù)服務(wù)器,以使所述各業(yè)務(wù)服務(wù)器將所述編譯后的待部署應(yīng)用和所述測(cè)試用例存入到所述部署目錄下,并運(yùn)行所述測(cè)試用例對(duì)所述編譯后的待部署應(yīng)用進(jìn)行測(cè)試。
[0110]目前,各個(gè)應(yīng)用服務(wù)提供商總是不斷推陳出新各種各樣的網(wǎng)絡(luò)應(yīng)用,比如目前用于人們即時(shí)通信的微信,論壇、微博等等。每當(dāng)應(yīng)用的開發(fā)人員完成相關(guān)應(yīng)用的開發(fā)之后,需要將該應(yīng)用部署在上述分布式系統(tǒng)中的業(yè)務(wù)服務(wù)器中,以提供給廣大用戶訪問使用。
[0111]具體來說,應(yīng)用開發(fā)人員可以將開發(fā)完成的應(yīng)用發(fā)送到分布式系統(tǒng)中的管理服務(wù)器中。
[0112]本實(shí)施例中,以管理服務(wù)器包括圖1所示的代碼服務(wù)器和編譯服務(wù)器對(duì)管理服務(wù)器的工作過程進(jìn)行細(xì)致說明。但是,可以理解的是,該管理服務(wù)器也可以集成上述兩個(gè)服務(wù)器的功能,作為唯一的整體執(zhí)行本實(shí)施例中的工作過程。
[0113]在具體介紹本實(shí)施例前,首先,值得說明的是,上述步驟S102和步驟S103之間不具有嚴(yán)格的時(shí)序限定關(guān)系,即既可以先獲取測(cè)試用例,之后再對(duì)待部署應(yīng)用進(jìn)行編譯;也可以先對(duì)待部署應(yīng)用進(jìn)行編譯,再獲取測(cè)試用例;還可以在獲取測(cè)試用例的同時(shí),對(duì)待部署應(yīng)用進(jìn)行編譯,此時(shí)分別由上述管理服務(wù)器的兩個(gè)進(jìn)程或者分別由上述代碼服務(wù)器和編譯服務(wù)器執(zhí)行不同的操作。
[0114]具體來說,本實(shí)施例中,代碼服務(wù)器可以用于接收應(yīng)用開發(fā)人員發(fā)送的應(yīng)用部署指令,該應(yīng)用部署指令中包括已經(jīng)開發(fā)完成的待部署應(yīng)用。因此,代碼服務(wù)器接收并存儲(chǔ)應(yīng)用開發(fā)人員發(fā)送的待部署應(yīng)用。運(yùn)維人員登錄編譯服務(wù)器后,通過與代碼服務(wù)器進(jìn)行交互,可以從代碼服務(wù)器中獲取當(dāng)前需要部署的應(yīng)用即待部署應(yīng)用。
[0115]本實(shí)施例中,該待部署應(yīng)用中除了包含有該應(yīng)用的源代碼之外,還包括該應(yīng)用的配置文件。
[0116]其中,應(yīng)用的配置文件中包含應(yīng)用程序特定的設(shè)置。該文件包含公共語(yǔ)言運(yùn)行庫(kù)讀取的配置設(shè)置(如程序集綁定策略、遠(yuǎn)程處理對(duì)象等等),以及應(yīng)用程序可以讀取的設(shè)置。
[0117]本實(shí)施例中,該配置文件中包含有該待部署應(yīng)用在各業(yè)務(wù)服務(wù)器中的部署目錄,該部署目錄可以預(yù)先設(shè)定。
[0118]如前所述,為了保證應(yīng)用在各業(yè)務(wù)服務(wù)器中部署之后能夠正常運(yùn)行,從而為廣大用戶提供相應(yīng)的服務(wù),需要預(yù)先對(duì)該應(yīng)用進(jìn)行測(cè)試,比如需要對(duì)該應(yīng)用進(jìn)行業(yè)務(wù)服務(wù)器基礎(chǔ)環(huán)境測(cè)試、單元測(cè)試等等。
[0119]其中,單元測(cè)試(unit testing):是指對(duì)軟件中的最小可測(cè)試單元進(jìn)行檢查和驗(yàn)證。對(duì)于單元測(cè)試中單元的含義,C語(yǔ)言中單元指一個(gè)函數(shù),Java里單元指一個(gè)類,圖形化的軟件中可以指一個(gè)窗口或一個(gè)菜單等??偟膩碚f,單元就是人為規(guī)定的最小的被測(cè)功能模塊。其中,由于該應(yīng)用在開發(fā)過程中,很可能是基于某些公共組件、某些第三方組件或者是某些架構(gòu)進(jìn)行開發(fā)的。為了使得該應(yīng)用能夠正常運(yùn)行使用,需要部署該應(yīng)用的各業(yè)務(wù)服務(wù)器能夠支持這些公共組件、第三方組件、架構(gòu),即各業(yè)務(wù)服務(wù)器需要提供該應(yīng)用所必須的基礎(chǔ)環(huán)境。因此,需要對(duì)各業(yè)務(wù)服務(wù)器是否提供這些基礎(chǔ)環(huán)境進(jìn)行測(cè)試。
[0120]為了實(shí)現(xiàn)對(duì)該應(yīng)用的自動(dòng)測(cè)試,本實(shí)施例中,管理服務(wù)器,具體是上述代碼服務(wù)器需要先獲得與該應(yīng)用對(duì)應(yīng)的測(cè)試用例,其中,該測(cè)試用例便包括用于進(jìn)行單元測(cè)試的單元測(cè)試用例,以及用于對(duì)各業(yè)務(wù)服務(wù)器的基礎(chǔ)運(yùn)行環(huán)境進(jìn)行測(cè)試的基礎(chǔ)環(huán)境測(cè)試用例。
[0121]值得說明的是,上述測(cè)試用例的生成方式不是本公開所要保護(hù)的重點(diǎn),因此不過多描述該測(cè)試用例的生成過程。而在實(shí)際中,測(cè)試用例一般是由專門的應(yīng)用測(cè)試人員預(yù)先編寫設(shè)計(jì)完成的。因此,本實(shí)施例中,假設(shè)與上述待部署的應(yīng)用的測(cè)試用例進(jìn)行設(shè)計(jì)完成并存儲(chǔ)在一個(gè)比如測(cè)試用例數(shù)據(jù)庫(kù),則代碼服務(wù)器可以查詢獲得與該應(yīng)用對(duì)應(yīng)的測(cè)試用例。比如說,代碼服務(wù)器通過以該應(yīng)用的標(biāo)識(shí)信息為索引在測(cè)試用例數(shù)據(jù)庫(kù)中查詢匹配的測(cè)試用例。相應(yīng)的,可以理解的是,應(yīng)用開發(fā)人員除了將該待部署應(yīng)用發(fā)送給代碼服務(wù)器外,還攜帶有該應(yīng)用的標(biāo)識(shí)信息,比如該應(yīng)用的名稱等。
[0122]從而,在代碼服務(wù)器獲得了與該待部署的應(yīng)用對(duì)應(yīng)的測(cè)試用例之后,將該待部署應(yīng)用與該測(cè)試用例關(guān)聯(lián)存儲(chǔ)。
[0123]在實(shí)際的應(yīng)用部署過程中,需要先將待部署的應(yīng)用進(jìn)行編譯,編譯通過后才進(jìn)行向各業(yè)務(wù)服務(wù)器中部署的處理。因此,在管理服務(wù)器以獨(dú)自的一個(gè)整體表示的情況下,管理服務(wù)器在接收到運(yùn)維人員針對(duì)該待部署應(yīng)用的編譯指令之后,進(jìn)行該應(yīng)用的編譯過程。其中,編譯是指利用編譯程序從源語(yǔ)言編寫的源程序(源代碼)產(chǎn)生目標(biāo)程序的過程。
[0124]在管理服務(wù)器以上述代碼服務(wù)器和編譯服務(wù)器表示的情況下,編譯服務(wù)器需從代碼服務(wù)器中獲得該待部署應(yīng)用以及對(duì)應(yīng)的測(cè)試用例,進(jìn)而對(duì)該應(yīng)用進(jìn)行編譯處理。具體的,該代碼服務(wù)器可以在獲得與該待部署應(yīng)用對(duì)應(yīng)的測(cè)試用例之后,自動(dòng)觸發(fā)向編譯服務(wù)器發(fā)送該應(yīng)用和該測(cè)試用例;或者,編譯服務(wù)器可以周期性地向代碼服務(wù)器發(fā)送查詢請(qǐng)求,以查詢代碼服務(wù)器中是否存在需要部署的應(yīng)用,如果有,則該代碼服務(wù)器反饋給編譯服務(wù)器相應(yīng)的待部署應(yīng)用以及對(duì)應(yīng)的測(cè)試用例。
[0125]如果該待部署應(yīng)用編譯通過,則該編譯服務(wù)器將該編譯后的應(yīng)用和對(duì)應(yīng)的測(cè)試用例發(fā)送給各業(yè)務(wù)服務(wù)器,各業(yè)務(wù)服務(wù)器將接收到的應(yīng)用和測(cè)試用例存儲(chǔ)在該應(yīng)用的配置文件中所描述的部署目錄下,從而,各個(gè)業(yè)務(wù)服務(wù)器自動(dòng)將該應(yīng)用和測(cè)試用例均部署在相同的目錄下,并啟動(dòng)運(yùn)行該測(cè)試用例以完成對(duì)該應(yīng)用能夠正常運(yùn)行的測(cè)試。如果測(cè)試通過,則部署完成,否則反饋給編譯服務(wù)器告警提示,以使得運(yùn)維人員對(duì)測(cè)試異常的業(yè)務(wù)服務(wù)器進(jìn)行檢測(cè)維護(hù)。
[0126]本實(shí)施例中,通過在應(yīng)用的配置文件中設(shè)置該應(yīng)用部署在分布式式系統(tǒng)的各業(yè)務(wù)服務(wù)器中的部署目錄,使得各業(yè)務(wù)服務(wù)器自動(dòng)部署該應(yīng)用在該部署目錄下,保證了該應(yīng)用在所有業(yè)務(wù)服務(wù)器中的部署路徑一致;而且,在獲得與該應(yīng)用對(duì)應(yīng)的測(cè)試用例之后,將測(cè)試用例也發(fā)送給各業(yè)務(wù)服務(wù)器,使得各業(yè)務(wù)服務(wù)器將該測(cè)試用例與該應(yīng)用一并存入上述部署目錄中,各業(yè)務(wù)服務(wù)器自動(dòng)啟動(dòng)運(yùn)行該測(cè)試用例對(duì)該應(yīng)用進(jìn)行測(cè)試。該自動(dòng)部署和測(cè)試過程中,無需人工干預(yù),避免人工部署、測(cè)試容易出錯(cuò)的問題,提高應(yīng)用部署和測(cè)試效率的同時(shí),保證了應(yīng)用部署和測(cè)試的可靠性。
[0127]圖3是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署方法實(shí)施例二的流程圖,本實(shí)施例對(duì)圖2所示實(shí)施例中的步驟102給出另一種實(shí)現(xiàn)方式。如圖3所示,本實(shí)施例提供的所述應(yīng)用部署方法具體可以包括如下步驟:
[0128]在步驟201中,接收應(yīng)用部署指令,獲取待部署應(yīng)用,所述應(yīng)用部署指令中包括所述待部署應(yīng)用的應(yīng)用標(biāo)識(shí)、版本號(hào)和描述文件。
[0129]在步驟202中,確定是否存在與所述待部署應(yīng)用對(duì)