應(yīng)的歷史應(yīng)用,所述歷史應(yīng)用是應(yīng)用標(biāo)識與所述待部署應(yīng)用的應(yīng)用標(biāo)識相同且版本號低于所述待部署應(yīng)用的版本號的應(yīng)用,若存在與所述待部署應(yīng)用對應(yīng)的歷史應(yīng)用,則執(zhí)行步驟203。
[0130]在步驟203中,獲取與所述歷史應(yīng)用對應(yīng)的歷史描述文件,所述歷史描述文件是所述歷史應(yīng)用的描述文件。
[0131]在步驟204中,根據(jù)所述歷史描述文件與所述待部署應(yīng)用的描述文件,獲取與所述待部署應(yīng)用對應(yīng)的測試用例。
[0132]本實(shí)施例中,在管理服務(wù)器接收到的應(yīng)用部署指令中包括除了包括待部署應(yīng)用夕卜,還可以包括該應(yīng)用的應(yīng)用標(biāo)識、版本號和描述文件。
[0133]其中,該應(yīng)用標(biāo)識和版本號用于唯一表示該應(yīng)用,因?yàn)閼?yīng)用會有升級、更新,同一個(gè)應(yīng)用會有不同的版本號。其中,該應(yīng)用的描述文件是對該應(yīng)用所提供的功能,該應(yīng)用中包含的各個(gè)功能模塊的描述。
[0134]另外,在管理服務(wù)器中保存有已經(jīng)部署過的已部署應(yīng)用的應(yīng)用標(biāo)識、版本號、描述文件、測試用例的信息,這些信息可以存儲在一個(gè)數(shù)據(jù)庫中。
[0135]因此,當(dāng)管理服務(wù)器接收到上述應(yīng)用部署指令后,根據(jù)當(dāng)前待部署應(yīng)用的應(yīng)用標(biāo)識和版本號從上述數(shù)據(jù)庫中查詢是否存在與該當(dāng)前待部署應(yīng)用的應(yīng)用標(biāo)識相同,且版本號低于當(dāng)前待部署應(yīng)用的版本號的歷史應(yīng)用即已部署應(yīng)用。
[0136]其中,值得說明的是,如果上述數(shù)據(jù)庫中存儲有一個(gè)應(yīng)用的多個(gè)版本,則上述查詢的過程中,尤其是查詢獲得比當(dāng)前待部署應(yīng)用的版本號低一個(gè)版本號的對應(yīng)歷史應(yīng)用。
[0137]如果管理服務(wù)器查詢確定不存在與待部署應(yīng)用對應(yīng)的歷史應(yīng)用,則可以與測試用例生成平臺交互以獲得與待部署應(yīng)用對應(yīng)的測試用例;如果管理服務(wù)器查詢確定存在與待部署應(yīng)用對應(yīng)的歷史應(yīng)用,則其從上述數(shù)據(jù)庫中獲取該歷史應(yīng)用的描述文件即歷史描述文件。
[0138]進(jìn)而,管理服務(wù)器通過比較該歷史描述文件和待部署應(yīng)用的描述文件,以確定兩個(gè)描述文件是否一致,并根據(jù)比較結(jié)果采用不同的方式獲取與待部署應(yīng)用對應(yīng)的測試用例。
[0139]具體來說,如果兩個(gè)描述文件中所描述的應(yīng)用功能、包含的功能模塊、每個(gè)功能模塊的作用或?qū)崿F(xiàn)方式都一致,即如果確定待部署應(yīng)用中不存在模塊功能與該歷史應(yīng)用的各功能模塊不同的差異功能模塊,則說明可以采用該歷史應(yīng)用對應(yīng)的測試用例作為與待部署應(yīng)用對應(yīng)的測試用例。否則,若待部署應(yīng)用與該歷史應(yīng)用中存在差異功能模塊,則通過獲取增量測試用例的方式獲取該待部署應(yīng)用所對應(yīng)的測試用例。
[0140]具體地,管理服務(wù)器首先通過上述數(shù)據(jù)庫獲得該歷史應(yīng)用的測試用例,再獲取與差異功能模塊對應(yīng)的差異測試用例,進(jìn)而根據(jù)差異測試用例更新歷史應(yīng)用對應(yīng)的測試用例,將更新后的歷史應(yīng)用對應(yīng)的測試用例作為與待部署應(yīng)用對應(yīng)的測試用例。
[0141]其中,獲取與差異功能模塊對應(yīng)的差異測試用例,比如可以通過與測試用例生成平臺交互來獲得。通過向測試用例生成平臺發(fā)送上述差異功能模塊,使得測試用例設(shè)計(jì)人員設(shè)計(jì)完成與該差異功能模塊測試對應(yīng)的差異測試用例,并通過測試用例生成平臺反饋給管理服務(wù)器。
[0142]其中,根據(jù)差異測試用例更新歷史應(yīng)用對應(yīng)的測試用例,具體包括:如果差異功能模塊是相對于歷史應(yīng)用而附加的功能模塊,則將該差異測試用例添加到歷史應(yīng)用對應(yīng)的測試用例中,完成更新;如果差異功能模塊是相對于歷史應(yīng)用中的某已有功能模塊的改變,則從歷史應(yīng)用對應(yīng)的測試用例中添加該差異測試用例,同時(shí)可以將歷史應(yīng)用對應(yīng)的測試用例中用于測試與該差異功能模塊對應(yīng)的功能模塊的測試用例刪除,完成更新。
[0143]本實(shí)施例中,管理服務(wù)器中存儲有已部署的各應(yīng)用的相關(guān)信息,從而使得在后續(xù)部署升級的應(yīng)用時(shí),能夠借助對應(yīng)的已部署應(yīng)用的測試用例,通過獲取差異測試用例的方式降低針對每個(gè)應(yīng)用需要進(jìn)行獨(dú)立的全部測試用例的設(shè)計(jì)所帶來的工作量,能夠進(jìn)一步提高應(yīng)用部署的效率。
[0144]圖4是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署方法實(shí)施例三的流程圖,在上述實(shí)施例的基礎(chǔ)上,如圖4所示,本實(shí)施例中,在上述步驟103對所述待部署應(yīng)用進(jìn)行編譯之前,還包括如下步驟:
[0145]在步驟301中,接收編譯指令,所述編譯指令中包括編譯操作者的認(rèn)證信息;
[0146]在步驟302中,根據(jù)所述認(rèn)證信息對所述編譯操作者進(jìn)行身份認(rèn)證,確定認(rèn)證是否通過,若認(rèn)證通過,則執(zhí)行步驟103,若認(rèn)證不通過,則結(jié)束。
[0147]由于上述運(yùn)維人員作為編譯操作者以及向各業(yè)務(wù)服務(wù)器發(fā)送編譯通過后的應(yīng)用和測試用例的操作者,由于該應(yīng)用對于應(yīng)用提供商來說具有重要價(jià)值,因此,為了避免非授權(quán)人員的惡意操作,可以對運(yùn)維人員進(jìn)行身份認(rèn)證。
[0148]具體來說,管理服務(wù)器中可以預(yù)先存儲已授權(quán)人員的認(rèn)證信息,該認(rèn)證信息比如是登錄賬號和密碼。因此,當(dāng)運(yùn)維人員即當(dāng)前操作者登錄管理服務(wù)器時(shí),如果其輸入的登錄賬號和密碼為已授權(quán)的賬號和密碼中的一個(gè),則認(rèn)為該操作者通過認(rèn)證。
[0149]可以理解的是,該身份認(rèn)證方式比如還可以是驗(yàn)證碼、指紋等方式,不做具體限定。
[0150]以上,從管理服務(wù)器的角度介紹了在分布式系統(tǒng)的各業(yè)務(wù)服務(wù)器中部署應(yīng)用的過程,下面結(jié)合幾個(gè)實(shí)施例從各業(yè)務(wù)服務(wù)器的角度,介紹應(yīng)用部署的具體過程。
[0151]圖5是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署方法的實(shí)施例四的流程圖,如圖5所示,該應(yīng)用部署方法包括如下步驟:
[0152]在步驟401中,接收管理服務(wù)器發(fā)送的編譯后的待部署應(yīng)用以及與所述待部署應(yīng)用對應(yīng)的測試用例;其中,所述待部署應(yīng)用中包括源代碼和配置文件,所述配置文件中包含所述待部署應(yīng)用的部署目錄。
[0153]在步驟402中,將所述編譯后的待部署應(yīng)用和所述測試用例存入到所述部署目錄下。
[0154]在步驟403中,運(yùn)行所述測試用例對所述編譯后的待部署應(yīng)用進(jìn)行測試。
[0155]如前述各實(shí)施例中所述的,管理服務(wù)器在接收到應(yīng)用部署指令后,獲得與待部署應(yīng)用對應(yīng)的測試用例,在完成對待部署應(yīng)用的編譯等處理之后,將待部署應(yīng)用和測試用例發(fā)送給各業(yè)務(wù)服務(wù)器,其中,待部署應(yīng)用的配置文件中包含待部署應(yīng)用的部署目錄。
[0156]從而,各業(yè)務(wù)服務(wù)器在接收到管理服務(wù)器發(fā)送的上述編譯后的待部署應(yīng)用和測試用例之后,將該編譯后的待部署應(yīng)用和測試用例存入到該部署目錄下,從而,每個(gè)業(yè)務(wù)服務(wù)器都將待部署應(yīng)用和測試用例部署在相同的部署目錄下,避免人工部署時(shí)容易出錯(cuò)的問題,比如存錯(cuò)目錄、對待部署應(yīng)用或測試用例進(jìn)行了誤操作等。
[0157]進(jìn)而,每個(gè)業(yè)務(wù)服務(wù)器從該部署目錄中啟動運(yùn)行測試用例,已完成對該待部署應(yīng)用能否正常運(yùn)行的測試。
[0158]其中,本實(shí)施例中,測試用例主要包括單元測試用例和基礎(chǔ)環(huán)境測試用例。這兩個(gè)測試用例的執(zhí)行順序是,優(yōu)先執(zhí)行基礎(chǔ)環(huán)境測試用例,對所述待部署應(yīng)用的基礎(chǔ)運(yùn)行環(huán)境進(jìn)行測試,如果基礎(chǔ)環(huán)境測試通過,則執(zhí)行單元測試用例,對所述待部署應(yīng)用的各功能模塊進(jìn)行測試;如果基礎(chǔ)環(huán)境測試用例測試未通過,則向管理服務(wù)器發(fā)出告警提示,以提示運(yùn)維人員出現(xiàn)了什么樣的測試問題。相應(yīng)的,如果在執(zhí)行單元測試用例時(shí),單元測試通過,則說明該待部署應(yīng)用能夠在業(yè)務(wù)服務(wù)器中正常運(yùn)行,部署結(jié)束,如果單元測試沒有通過,則向管理服務(wù)器發(fā)出告警提示,以提示運(yùn)維人員出現(xiàn)了什么樣的單元測試問題。
[0159]本實(shí)施例中,各業(yè)務(wù)服務(wù)器在接收到管理服務(wù)器發(fā)送的攜帶有部署目標(biāo)的待部署應(yīng)用及其對應(yīng)的測試用例后,自動將該待部署應(yīng)用存入即部署到該目錄下,并自動運(yùn)行測試用例對該應(yīng)用進(jìn)行測試。該自動部署和測試過程中,無需人工干預(yù),避免人工部署、測試容易出錯(cuò)的問題,提高應(yīng)用部署和測試效率的同時(shí),保證了應(yīng)用部署和測試的可靠性。
[0160]圖6是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署方法的實(shí)施例五的流程圖,如圖6所示,該方法具體包括如下的步驟:
[0161]在步驟501中,接收管理服務(wù)器發(fā)送的編譯后的待部署應(yīng)用以及與所述待部署應(yīng)用對應(yīng)的測試用例;其中,所述待部署應(yīng)用中包括源代碼和配置文件,所述配置文件中包含所述待部署應(yīng)用的部署目錄,所述部署目錄包括臨時(shí)目錄和正式目錄。
[0162]在步驟502中,將所述編譯后的待部署應(yīng)用和所述測試用例存入到所述臨時(shí)目錄下。
[0163]在步驟503中,在所述臨時(shí)目錄下運(yùn)行所述測試用例對所述編譯后的待部署應(yīng)用進(jìn)行測試。
[0164]在步驟504中,若在所述臨時(shí)目錄下運(yùn)行所述測試用例對所述編譯后的待部署應(yīng)用進(jìn)行測試通過,則將所述編譯后的待部署應(yīng)用存入到所述正式目錄下,并刪除存入到所述臨時(shí)目錄中的所述編譯后的待部署應(yīng)用和所述測試用例。
[0165]本實(shí)施例中,之所以設(shè)置臨時(shí)目錄和正式目錄是基于以下的考慮,其中,正式目錄是與臨時(shí)目錄不同的目錄。
[0166]由于在運(yùn)行測試用例對待部署應(yīng)用進(jìn)行測試的過程中,會產(chǎn)生很多臨時(shí)性文件、系統(tǒng)碎片等垃圾文件,這些垃圾文件不但會占用業(yè)務(wù)服務(wù)器一定的存儲空間,也會導(dǎo)致后續(xù)應(yīng)用正式運(yùn)行使用時(shí)運(yùn)行環(huán)境不干凈。因此,為了保證后續(xù)的應(yīng)用正式使用時(shí)的高效可靠,本實(shí)施例中采用了設(shè)置兩個(gè)目錄的方式。
[0167]具體來說,首先,各業(yè)務(wù)服務(wù)器將待部署應(yīng)用和測試用例都存儲在臨時(shí)目錄中,其中,該臨時(shí)目錄的選擇依據(jù)是,選擇業(yè)務(wù)服務(wù)器的操作系統(tǒng)在重啟后便會消失的目錄,即非永久性目錄。進(jìn)而,業(yè)務(wù)服務(wù)器在該臨時(shí)目錄下運(yùn)行測試用例完成對待部署應(yīng)用的測試,如果測試通過,即如果基礎(chǔ)環(huán)境測試通過、單元測試也通過,則業(yè)務(wù)服務(wù)器將該待部署應(yīng)用轉(zhuǎn)存到正式目錄中,進(jìn)而可以重啟業(yè)務(wù)服務(wù)器,激活應(yīng)用可以正式使用。該正式目錄與臨時(shí)目錄相對,是永久性目錄。并且,業(yè)務(wù)服務(wù)器刪除存入到臨時(shí)目錄中的待部署應(yīng)用和測試用例,從而將產(chǎn)生的上述大部分垃圾文件均刪除掉,保證應(yīng)用正式運(yùn)行時(shí)運(yùn)行環(huán)境的干凈。
[0168]以上分別從管理服務(wù)器和業(yè)務(wù)服務(wù)器的角度對本公開提供的應(yīng)用部署方法進(jìn)行了說明,下面結(jié)合圖7,簡單介紹本公開在分布式系統(tǒng)中部署應(yīng)用時(shí),管理服務(wù)器與業(yè)務(wù)服務(wù)器的主要交互過程,其中,本實(shí)施例中以管理服務(wù)器包括代碼服務(wù)器和編譯服務(wù)器為例說明。
[0169]圖7是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用部署方法的信令交互圖,如圖7所示,該交互過程包括:
[0170]在步驟601中,代碼服務(wù)器接收應(yīng)用部署指令,該應(yīng)用部署指令中包括待部署應(yīng)用,該待部署應(yīng)用中包括源代碼和配置文件,配置文件中包括待部署應(yīng)用的部署目錄。
[0171]在步驟602中,代碼服務(wù)器獲取與該待部署應(yīng)用對應(yīng)的測試用例。
[0172]在步驟603中,編譯服務(wù)器從代碼服務(wù)器中獲得所述待部署應(yīng)用和所述測試用例。
[0173]在步驟604中,編譯服務(wù)器接收操作者的編譯指令,根據(jù)該編譯指令編譯所述待部署應(yīng)用。
[0174]在步驟605中,編譯服務(wù)器將編譯后的待部署應(yīng)用和所述測試用例分別發(fā)送給各業(yè)務(wù)服務(wù)器。
[0175]在步驟606中,各業(yè)務(wù)服務(wù)器將編譯后的待部署應(yīng)用和所述測試用例存儲在部署目錄中,并運(yùn)行所述測試用例。
[0176]綜