本公開涉及終端技術(shù)領(lǐng)域,尤其涉及多代碼庫的代碼編譯檢查方法及裝置。
背景技術(shù):
由于終端操作系統(tǒng)的復(fù)雜性,系統(tǒng)代碼可能會存儲在不同的代碼庫中,在此情況下,若要對不同代碼庫內(nèi)的代碼進(jìn)行編譯檢查,終端可以使用不同的編譯系統(tǒng)分別對不同的代碼庫進(jìn)行獨(dú)立的代碼編譯檢查。
技術(shù)實(shí)現(xiàn)要素:
本公開實(shí)施例提供多代碼庫的代碼編譯檢查方法及裝置。所述技術(shù)方案如下:
根據(jù)本公開實(shí)施例的第一方面,提供一種多代碼庫的代碼編譯檢查方法,包括:
在監(jiān)聽到用戶向管理服務(wù)器提交代碼時,獲取所述代碼的相關(guān)信息和所述代碼提交到的所述管理服務(wù)器的地址信息,其中,所述代碼的相關(guān)信息包括所述代碼的標(biāo)識信息、所屬的項(xiàng)目名和所提交分支;
根據(jù)所述代碼所提交分支確定所述代碼所覆蓋的各機(jī)型;
根據(jù)所述代碼所屬的項(xiàng)目名,創(chuàng)建所述代碼在所述各機(jī)型中的各編譯任務(wù);
將編譯消息分別發(fā)送至所述各機(jī)型對應(yīng)的各編譯服務(wù)器,其中,所述編譯消息中攜帶有對應(yīng)的編譯任務(wù)以及所述代碼的相關(guān)信息、所述管理服務(wù)器的地址信息,用于指示所述編譯服務(wù)器按照所述編譯任務(wù)中的編譯策略編譯所述管理服務(wù)器中提交的所述代碼;
接收所述各機(jī)型對應(yīng)的各編譯服務(wù)器返回的編譯結(jié)果消息,所述編譯結(jié)果消息用于通知所述編譯任務(wù)是否成功;
在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息均通知所述編譯任務(wù)成功時,根據(jù)所述管理服務(wù)器的地址信息向所述管理服務(wù)器發(fā)送編譯檢查成功消息,所述編譯檢查成功消息用于通知所述代碼編譯檢查成功。
本公開的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:本實(shí)施例可以對不同代碼庫的代碼進(jìn)行編譯檢查,對于多用戶提交不同代碼的情況,也可以使用上述方法以多線程的方式工作,滿足大量多用戶并發(fā)操作,簡化對多源代碼進(jìn)行代碼編譯檢查的流程,節(jié)省編譯檢查服務(wù)器資源,減輕編譯檢查系統(tǒng)管理員的工作復(fù)雜性。
在一個實(shí)施例中,所述方法還包括:
在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息中有通知所述編譯任務(wù)失敗或超出預(yù)設(shè)時間未獲取編譯結(jié)果消息時,向所述管理服務(wù)器發(fā)送編譯檢查失敗消息,所述編譯檢查失敗消息用于表明所述代碼編譯檢查失敗。
本公開的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:本實(shí)施例可以在各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息中有通知編譯任務(wù)失敗或超出預(yù)設(shè)時間未獲取編譯結(jié)果消息時,向所述管理服務(wù)器發(fā)送編譯檢查失敗消息,以通知開發(fā)人員在該代碼編譯檢查失敗后更改該代碼。
在一個實(shí)施例中,在向所述管理服務(wù)器發(fā)送編譯檢查成功消息后,所述方法還包括:
向各編譯服務(wù)器發(fā)送代碼更新消息,所述代碼更新消息用于通知所述編譯服務(wù)器更新所述代碼的狀態(tài)。
本公開的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:本實(shí)施例可以向各編譯服務(wù)器發(fā)送代碼更新消息,通知編譯服務(wù)器更新所述代碼的狀態(tài),提高終端系統(tǒng)底層、中層和上層代碼庫的穩(wěn)定性,減少編譯失敗影響開發(fā)進(jìn)度,并且節(jié)省了服務(wù)器資源和減少了編譯檢查系統(tǒng)的維護(hù)工作量。
在一個實(shí)施例中,所述編譯檢查成功消息中攜帶有代碼的相關(guān)信息。
本公開的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:本實(shí)施例可以在編譯檢查成功消息中攜帶代碼的相關(guān)信息,向管理服務(wù)器指示編譯檢查成功的代碼。
在一個實(shí)施例中,所述編譯結(jié)果消息中攜帶有所述代碼的相關(guān)信息,當(dāng)前編譯服務(wù)器對應(yīng)的機(jī)型以及編譯成功與否的標(biāo)識信息。
本公開的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:本實(shí)施例可以在編譯結(jié)果消息中攜帶代碼的相關(guān)信息,當(dāng)前編譯服務(wù)器對應(yīng)的機(jī)型以及編譯成功與否的標(biāo)識信息,使得服務(wù)器能夠確定哪段代碼編譯檢查成功。
根據(jù)本公開實(shí)施例的第二方面,提供一種多代碼庫的代碼編譯檢查裝置,包括:
獲取模塊,用于在監(jiān)聽到用戶向管理服務(wù)器提交代碼時,獲取所述代碼的相關(guān)信息和所述代碼提交到的所述管理服務(wù)器的地址信息,其中,所述代碼的相關(guān)信息包括所述代碼的標(biāo)識信息、所屬的項(xiàng)目名和所提交分支;
確定模塊,用于根據(jù)所述代碼所提交分支確定所述代碼所覆蓋的各機(jī)型;
創(chuàng)建模塊,用于根據(jù)所述代碼所屬的項(xiàng)目名,創(chuàng)建所述代碼在所述各機(jī)型中的各編譯任務(wù);
第一發(fā)送模塊,用于將編譯消息分別發(fā)送至所述各機(jī)型對應(yīng)的各編譯服務(wù)器,其中,所述編譯消息中攜帶有對應(yīng)的編譯任務(wù)以及所述代碼的相關(guān)信息、所述管理服務(wù)器的地址信息,用于指示所述編譯服務(wù)器按照所述編譯任務(wù)中的編譯策略編譯所述管理服務(wù)器中提交的所述代碼;
接收模塊,用于接收所述各機(jī)型對應(yīng)的各編譯服務(wù)器返回的編譯結(jié)果消息,所述編譯結(jié)果消息用于通知所述編譯任務(wù)是否成功;
第二發(fā)送模塊,用于在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息均通知所述編譯任務(wù)成功時,根據(jù)所述管理服務(wù)器的地址信息向所述管理服務(wù)器發(fā)送編譯檢查成功消息,所述編譯檢查成功消息用于通知所述代碼編譯檢查成功。
在一個實(shí)施例中,所述裝置還包括:
第三發(fā)送模塊,用于在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息中有通知所述編譯任務(wù)失敗或超出預(yù)設(shè)時間未獲取編譯結(jié)果消息時,向所述管理服務(wù)器發(fā)送編譯檢查失敗消息,所述編譯檢查失敗消息用于表明所述代碼編譯檢查失敗。
在一個實(shí)施例中,所述裝置還包括:
第四發(fā)送模塊,用于在向所述管理服務(wù)器發(fā)送編譯檢查成功消息后,向各編譯服務(wù)器發(fā)送代碼更新消息,所述代碼更新消息用于通知所述編譯服務(wù)器更新所述代碼的狀態(tài)。
在一個實(shí)施例中,所述編譯檢查成功消息中攜帶有代碼的相關(guān)信息。
在一個實(shí)施例中,所述編譯結(jié)果消息中攜帶有所述代碼的相關(guān)信息,當(dāng)前編譯服務(wù)器對應(yīng)的機(jī)型以及編譯成功與否的標(biāo)識信息。
根據(jù)本公開實(shí)施例的第三方面,提供一種多代碼庫的代碼編譯檢查裝置,包括:
處理器;
用于存儲處理器可執(zhí)行指令的存儲器;
其中,所述處理器被配置為:
在監(jiān)聽到用戶向管理服務(wù)器提交代碼時,獲取所述代碼的相關(guān)信息和所述代碼提交到的所述管理服務(wù)器的地址信息,其中,所述代碼的相關(guān)信息包括所述代碼的標(biāo)識信息、所屬的項(xiàng)目名和所提交分支;
根據(jù)所述代碼所提交分支確定所述代碼所覆蓋的各機(jī)型;
根據(jù)所述代碼所屬的項(xiàng)目名,創(chuàng)建所述代碼在所述各機(jī)型中的各編譯任務(wù);
將編譯消息分別發(fā)送至所述各機(jī)型對應(yīng)的各編譯服務(wù)器,其中,所述編譯消息中攜帶有對應(yīng)的編譯任務(wù)以及所述代碼的相關(guān)信息、所述管理服務(wù)器的地址信息,用于指示所述編譯服務(wù)器按照所述編譯任務(wù)中的編譯策略編譯所述管理服務(wù)器中提交的所述代碼;
接收所述各機(jī)型對應(yīng)的各編譯服務(wù)器返回的編譯結(jié)果消息,所述編譯結(jié)果消息用于通知所述編譯任務(wù)是否成功;
在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息均通知所述編譯任務(wù)成功時,根據(jù)所述管理服務(wù)器的地址信息向所述管理服務(wù)器發(fā)送編譯檢查成功消息,所述編譯檢查成功消息用于通知所述代碼編譯檢查成功。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實(shí)施例,并與說明書一起用于解釋本公開的原理。
圖1是根據(jù)一示例性實(shí)施例示出的一種多代碼庫的代碼編譯檢查方法的流程圖。
圖2是根據(jù)一示例性實(shí)施例示出的一種多代碼庫的代碼編譯檢查方法的流程圖。
圖3是根據(jù)一示例性實(shí)施例示出的一種多代碼庫的代碼編譯檢查方法的流程圖。
圖4是根據(jù)一示例性實(shí)施例示出的一種多代碼庫的代碼編譯檢查裝置的框圖。
圖5是根據(jù)一示例性實(shí)施例示出的一種多代碼庫的代碼編譯檢查裝置的框圖。
圖6是根據(jù)一示例性實(shí)施例示出的一種多代碼庫的代碼編譯檢查裝置的框圖。
圖7是根據(jù)一示例性實(shí)施例示出的一種多代碼庫的代碼編譯檢查裝置的框圖。
具體實(shí)施方式
這里將詳細(xì)地對示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本公開相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本公開的一些方面相一致的裝置和方法的例子。
終端若是分別對不同的代碼庫進(jìn)行獨(dú)立的代碼編譯檢查,雖然可以解決對不同源的代碼起到檢查的作用,但是相應(yīng)的會增加額外的編譯服務(wù)器資源,造成資源浪費(fèi),也會增加編譯檢查系統(tǒng)維護(hù)人員的維護(hù)復(fù)雜性。
為了解決上述問題,本實(shí)施例可以使用同一套編譯檢查系統(tǒng)來對不同代碼庫的代碼進(jìn)行檢查,在監(jiān)聽到用戶向管理服務(wù)器提交代碼時,不管該代碼是屬于哪個代碼庫的代碼,服務(wù)器都獲取該代碼的相關(guān)信息和所述代碼提交到的所述管理服務(wù)器的地址信息,其中,所述代碼的相關(guān)信息包括所述代碼的標(biāo)識信息、所屬的項(xiàng)目名和所提交分支;根據(jù)所述代碼所提交分支確定所述代碼所覆蓋的各機(jī)型;根據(jù)所述代碼所屬的項(xiàng)目名,創(chuàng)建所述代碼在所述各機(jī)型中的各編譯任務(wù);將編譯消息分別發(fā)送至所述各機(jī)型對應(yīng)的各編譯服務(wù)器,并接收所述各機(jī)型對應(yīng)的各編譯服務(wù)器返回的編譯結(jié)果消息,在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息均通知所述編譯任務(wù)成功時,根據(jù)所述管理服務(wù)器的地址信息向所述管理服務(wù)器發(fā)送編譯檢查成功消息,所述編譯檢查成功消息用于通知所述代碼編譯檢查成功;如此,不管該代碼是屬于哪個代碼庫的代碼,服務(wù)器都可以按照上述方法對該代碼進(jìn)行編譯檢查,對于多用戶提交不同代碼的情況,也可以使用上述方法以多線程的方式工作,滿足大量多用戶并發(fā)操作,簡化對多源代碼進(jìn)行代碼編譯檢查的流程,節(jié)省編譯檢查服務(wù)器資源,減輕編譯檢查系統(tǒng)管理員的工作復(fù)雜性。
圖1是根據(jù)一示例性實(shí)施例示出的一種多代碼庫的代碼編譯檢查方法的流程圖,如圖1所示,該多代碼庫的代碼編譯檢查方法用于服務(wù)器等設(shè)備中,包括以下步驟101-104:
在步驟101中,在監(jiān)聽到用戶向管理服務(wù)器提交代碼時,獲取所述代碼的相關(guān)信息和所述代碼提交到的所述管理服務(wù)器的地址信息,其中,所述代碼的相關(guān)信息包括所述代碼的標(biāo)識信息、所屬的項(xiàng)目名和所提交分支。
在步驟102中,根據(jù)所述代碼所提交分支確定所述代碼所覆蓋的各機(jī)型。
在步驟103中,根據(jù)所述代碼所屬的項(xiàng)目名,創(chuàng)建所述代碼在所述各機(jī)型中的各編譯任務(wù)。
在步驟104中,將編譯消息分別發(fā)送至所述各機(jī)型對應(yīng)的各編譯服務(wù)器,其中,所述編譯消息中攜帶有對應(yīng)的編譯任務(wù)以及所述代碼的相關(guān)信息、所述管理服務(wù)器的地址信息,用于指示所述編譯服務(wù)器按照所述編譯任務(wù)中的編譯策略編譯所述管理服務(wù)器中提交的所述代碼。
在步驟105中,接收所述各機(jī)型對應(yīng)的各編譯服務(wù)器返回的編譯結(jié)果消息,所述編譯結(jié)果消息用于通知所述編譯任務(wù)是否成功。
在步驟106中,在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息均通知所述編譯任務(wù)成功時,根據(jù)所述管理服務(wù)器的地址信息向所述管理服務(wù)器發(fā)送編譯檢查成功消息,所述編譯檢查成功消息用于通知所述代碼編譯檢查成功。
在該實(shí)施例中,服務(wù)器內(nèi)設(shè)置有監(jiān)聽程序(listener),該監(jiān)聽程序可以負(fù)責(zé)監(jiān)聽多個管理服務(wù)器如:gerrit_a服務(wù)器、gerrit_b服務(wù)器和gerrit_c服務(wù)器。當(dāng)終端系統(tǒng)軟件的開發(fā)人員在管理服務(wù)器上提交了該終端系統(tǒng)下的代碼時,該監(jiān)聽程序就會被觸發(fā),此時,監(jiān)聽程序就會獲取觸發(fā)了監(jiān)聽程序的代碼的相關(guān)信息以及代碼提交到的所述管理服務(wù)器的地址信息。
這里,各個開發(fā)人員編寫該終端系統(tǒng)下的代碼完成后,就會將編寫完成的代碼提交到管理服務(wù)器,包括gerrit_a服務(wù)器、gerrit_b服務(wù)器、gerrit_c服務(wù)器等多個不同的各個代碼庫的管理服務(wù)器,如果該代碼是底層代碼庫中電話項(xiàng)目(telephony)的alpha分支處的代碼,則開發(fā)人員會將該代碼提交至底層代碼庫對應(yīng)的管理服務(wù)器-gerrit_a服務(wù)器中電話項(xiàng)目下的alpha分支處,此時,gerrit_a服務(wù)器會為該代碼生成相應(yīng)的代碼標(biāo)識如代碼編號1或者代碼編號1和代碼擁有者(owner),如此,服務(wù)器的監(jiān)聽程序就可以監(jiān)聽到開發(fā)人員向gerrit_a服務(wù)器中電話項(xiàng)目下的alpha分支處提交了代碼編號1的代碼,服務(wù)器就獲取了該代碼的標(biāo)識信息為代碼編號1、所屬的項(xiàng)目名為電話項(xiàng)目和所提交分支為alpha分支,以及該代碼提交到的gerrit_a服務(wù)器的地址信息,這里,管理服務(wù)器的地址信息包括管理服務(wù)器的域名和端口號。
在該實(shí)施例中,服務(wù)器的監(jiān)聽程序獲取代碼的相關(guān)信息和該代碼提交到的管理服務(wù)器的地址信息后,就可以將代碼的相關(guān)信息和該代碼提交到的管理服務(wù)器的地址信息以post(post是向服務(wù)器提交數(shù)據(jù)的一種請求的形式)的形式傳送給服務(wù)器中的控制(controller)服務(wù),控制服務(wù)會根據(jù)該代碼所提交分支即alpha分支,確定所述代碼所覆蓋的各機(jī)型即使用該alpha分支處代碼的所有機(jī)型:機(jī)型1、機(jī)型2和機(jī)型3。然后,控制服務(wù)會根據(jù)該代碼所屬的項(xiàng)目名確定該代碼所在的代碼庫,進(jìn)而確定出該代碼在機(jī)型1的編譯策略,創(chuàng)建出該代碼在機(jī)型1中的編譯任務(wù)1;同理,控制服務(wù)也會創(chuàng)建該代碼在機(jī)型2中的編譯任務(wù)2,該代碼在機(jī)型3中的編譯任務(wù)3。
在該實(shí)施例中,服務(wù)器中的控制服務(wù)創(chuàng)建完成該代碼在各機(jī)型中的各編譯任務(wù)后,就會將相應(yīng)的編譯任務(wù)攜帶在編譯消息中發(fā)送給各機(jī)型對應(yīng)的各編譯服務(wù)器,即將編譯任務(wù)1攜帶在編譯消息中發(fā)送給機(jī)型1對應(yīng)的編譯服務(wù)器1中,將編譯任務(wù)2攜帶在編譯消息中發(fā)送給機(jī)型2對應(yīng)的編譯服務(wù)器2中,將編譯任務(wù)3攜帶在編譯消息中發(fā)送給機(jī)型3對應(yīng)的編譯服務(wù)器3中。該編譯消息中還攜帶有該代碼的相關(guān)信息和gerrit_a服務(wù)器的地址信息,這樣,編譯服務(wù)器1就會按照該代碼的相關(guān)信息和gerrit_a服務(wù)器的地址信息向gerrit_a服務(wù)器發(fā)送代碼請求消息,請求gerrit_a服務(wù)器將該代碼的相關(guān)信息即gerrit_a服務(wù)器中電話項(xiàng)目下的alpha分支處代碼編號1的代碼發(fā)送至編譯服務(wù)器1,編譯服務(wù)器1獲取該代碼后,就會按照編譯任務(wù)1中的編譯策略編譯gerrit_a服務(wù)器中提交的代碼,同理,編譯服務(wù)器2會按照編譯任務(wù)2中的編譯策略編譯gerrit_a服務(wù)器中提交的代碼,編譯服務(wù)器3會按照編譯任務(wù)3中的編譯策略編譯gerrit_a服務(wù)器中提交的代碼。編譯服務(wù)器1按照編譯任務(wù)1中的編譯策略編譯完成代碼后就會向服務(wù)器返回編譯結(jié)果消息,通知該編譯任務(wù)成功,編譯服務(wù)器2和編譯服務(wù)器3編譯完成代碼后也會向服務(wù)器返回編譯結(jié)果消息,通知該編譯任務(wù)成功。
在該實(shí)施例中,編譯服務(wù)器返回的編譯結(jié)果消息均通知編譯任務(wù)成功時,表明該代碼在各個覆蓋的機(jī)型中都編譯檢查成功,即該代碼編譯檢查成功,此時,服務(wù)器就會根據(jù)該gerrit_a服務(wù)器的地址信息向gerrit_a服務(wù)器發(fā)送編譯檢查成功消息,通知該代碼編譯檢查成功;gerrit_a服務(wù)器接收到該代碼對應(yīng)的編譯檢查成功消息后,就會進(jìn)行codereview(代碼評審)操作+1,為開發(fā)人員顯示該代碼的編譯檢查成功結(jié)果。
本實(shí)施例可以使用上述方法對不同代碼庫的代碼進(jìn)行編譯檢查,對于多用戶提交不同代碼的情況,也可以使用上述方法以多線程的方式工作,滿足大量多用戶并發(fā)操作,簡化對多源代碼進(jìn)行代碼編譯檢查的流程,節(jié)省編譯檢查服務(wù)器資源,減輕編譯檢查系統(tǒng)管理員的工作復(fù)雜性。
在一種可能的實(shí)施方式中,上述多代碼庫的代碼編譯檢查方法還可以包括以下步驟a1。
在步驟a1中,在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息中有通知所述編譯任務(wù)失敗或超出預(yù)設(shè)時間未獲取編譯結(jié)果消息時,向所述管理服務(wù)器發(fā)送編譯檢查失敗消息,所述編譯檢查失敗消息用于表明所述代碼編譯檢查失敗。
在該實(shí)施例中,若該代碼所覆蓋的各機(jī)型對應(yīng)的編譯服務(wù)器中,有任一編譯服務(wù)器返回的編譯結(jié)果消息通知該編譯任務(wù)失敗,或者有任一編譯服務(wù)器超出預(yù)設(shè)時間未獲取編譯結(jié)果消息時,則表明該代碼在相應(yīng)機(jī)型對應(yīng)的編譯服務(wù)器中的編譯檢查失敗,這就表明該代碼的編譯檢查失敗,該代碼不能使用,此時,服務(wù)器就會向根據(jù)該gerrit_a服務(wù)器的地址信息向gerrit_a服務(wù)器發(fā)送編譯檢查失敗消息,通知該代碼編譯檢查失?。籫errit_a服務(wù)器接收到該代碼對應(yīng)的編譯檢查失敗消息后,就會進(jìn)行codereview(代碼評審)操作-2,為開發(fā)人員顯示該代碼的編譯檢查失敗結(jié)果,以使開發(fā)人員更改該代碼。
本實(shí)施例可以在各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息中有通知編譯任務(wù)失敗或超出預(yù)設(shè)時間未獲取編譯結(jié)果消息時,向所述管理服務(wù)器發(fā)送編譯檢查失敗消息,以通知開發(fā)人員在該代碼編譯檢查失敗后更改該代碼。
在一可能的實(shí)施方式中,在向所述管理服務(wù)器發(fā)送編譯檢查成功消息后,上述方法還包括以下步驟b1。
在步驟b1中,向各編譯服務(wù)器發(fā)送代碼更新消息,所述代碼更新消息用于通知所述編譯服務(wù)器更新所述代碼的狀態(tài)。
在該實(shí)施例中,服務(wù)器在向管理服務(wù)器發(fā)送編譯檢查成功消息時,表明該代碼可以在其覆蓋的機(jī)型中使用,可以進(jìn)入終端系統(tǒng)內(nèi),此時為了保證各代碼庫中代碼的編譯檢查的兼容性,服務(wù)器可以向各編譯服務(wù)器發(fā)送代碼更新消息,所述代碼更新消息用于通知編譯服務(wù)器更新該代碼的狀態(tài),如此,在有新的代碼要編譯檢查時,編譯服務(wù)器就可以在該代碼的新狀態(tài)下,完成對該新代碼的編譯檢查,如此,不管是哪層代碼庫中代碼的更新,編譯服務(wù)器都會及時地進(jìn)行狀態(tài)更新,在該代碼的狀態(tài)下對其它層代碼庫的新代碼進(jìn)行編譯檢查,提高終端系統(tǒng)底層、中層和上層代碼庫的穩(wěn)定性,與現(xiàn)有技術(shù)可能發(fā)生的上層新代碼在上層代碼庫編譯檢查成功,但是在剛更新的底層代碼狀態(tài)下可能會發(fā)生編譯失敗相比,減少編譯失敗影響開發(fā)進(jìn)度,并且節(jié)省了服務(wù)器資源和減少了編譯檢查系統(tǒng)的維護(hù)工作量。
本實(shí)施例可以向各編譯服務(wù)器發(fā)送代碼更新消息,通知編譯服務(wù)器更新所述代碼的狀態(tài),提高終端系統(tǒng)底層、中層和上層代碼庫的穩(wěn)定性,減少編譯失敗影響開發(fā)進(jìn)度,并且節(jié)省了服務(wù)器資源和減少了編譯檢查系統(tǒng)的維護(hù)工作量。
在一種可能的實(shí)施方式中,所述編譯檢查成功消息中攜帶有代碼的相關(guān)信息。
在本實(shí)施例中,服務(wù)器根據(jù)管理服務(wù)器的地址信息向管理服務(wù)器發(fā)送編譯檢查成功消息,通知該代碼編譯檢查成功時,該編譯檢查成功消息中攜帶有該代碼的相關(guān)信息,該代碼的相關(guān)信息中包括所述代碼的標(biāo)識信息、所屬的項(xiàng)目名和所提交分支;如此,當(dāng)管理服務(wù)器接收到編譯檢查成功消息后就可以通過代碼的標(biāo)識信息、所屬的項(xiàng)目名和所提交分支確定編譯檢查成功的是哪個代碼,進(jìn)而向開發(fā)人員顯示該代碼編譯檢查成功。
本實(shí)施例可以在編譯檢查成功消息中攜帶代碼的相關(guān)信息,向管理服務(wù)器指示編譯檢查成功的代碼。
在一種可能的實(shí)施方式中,所述編譯結(jié)果消息中攜帶有所述代碼的相關(guān)信息,當(dāng)前編譯服務(wù)器對應(yīng)的機(jī)型以及編譯成功與否的標(biāo)識信息。
在本實(shí)施例中,服務(wù)器接收到的編譯結(jié)果消息中攜帶有代碼的相關(guān)信息,當(dāng)前編譯服務(wù)器對應(yīng)的機(jī)型以及編譯成功與否的標(biāo)識信息,如此,服務(wù)器就會知道是哪個編譯服務(wù)器對哪個代碼編譯是否成功,進(jìn)而在各機(jī)型對應(yīng)的編譯服務(wù)器均通知編譯任務(wù)成功時,通知管理服務(wù)器開發(fā)人員提交的代碼編譯檢查成功。
示例的,服務(wù)器在創(chuàng)建該代碼在機(jī)型1中的編譯任務(wù)1,該代碼在機(jī)型2中的編譯任務(wù)2,該代碼在機(jī)型3中的編譯任務(wù)3時,可以將該代碼的相關(guān)信息即代碼編號1、所屬的項(xiàng)目名為電話項(xiàng)目和所提交分支為alpha分支、機(jī)型1對應(yīng)的編譯任務(wù)1、機(jī)型2對應(yīng)的編譯任務(wù)2、機(jī)型3對應(yīng)的編譯任務(wù)3記錄在數(shù)據(jù)庫中,并在接收到一編譯服務(wù)器發(fā)送的編譯結(jié)果消息時,將編譯結(jié)果消息中攜帶有所述代碼的相關(guān)信息和當(dāng)前編譯服務(wù)器對應(yīng)的機(jī)型與數(shù)據(jù)庫中記錄的信息進(jìn)行比對,如果代碼的相關(guān)信息和當(dāng)前編譯服務(wù)器對應(yīng)的機(jī)型與數(shù)據(jù)庫中記錄的代碼編號1、所屬的項(xiàng)目名為電話項(xiàng)目和所提交分支為alpha分支相同,且當(dāng)前編譯服務(wù)器對應(yīng)的機(jī)型為機(jī)型1時,將臨時變量count++(自動+1),這里臨時變量count初始值為0,當(dāng)臨時變量count的值等于機(jī)型數(shù)量3時,服務(wù)器確定各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息是否均通知所述編譯任務(wù)成功,只有3個機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息均通知所述編譯任務(wù)成功時,服務(wù)器才會向管理服務(wù)器發(fā)送編譯檢查成功消息,通知該代碼編譯檢查成功。
本實(shí)施例可以在編譯結(jié)果消息中攜帶代碼的相關(guān)信息,當(dāng)前編譯服務(wù)器對應(yīng)的機(jī)型以及編譯成功與否的標(biāo)識信息,使得服務(wù)器能夠確定哪段代碼編譯檢查成功。
下面通過幾個實(shí)施例詳細(xì)介紹實(shí)現(xiàn)過程。
圖2是根據(jù)一示例性實(shí)施例示出的一種多代碼庫的代碼編譯檢查方法的流程圖,如圖2所示,該方法可以由服務(wù)器等設(shè)備實(shí)現(xiàn),包括步驟201-207。
在步驟201中,在監(jiān)聽到用戶向管理服務(wù)器提交代碼時,獲取所述代碼的相關(guān)信息和所述代碼提交到的所述管理服務(wù)器的地址信息,其中,所述代碼的相關(guān)信息包括所述代碼的標(biāo)識信息、所屬的項(xiàng)目名和所提交分支。
在步驟202中,根據(jù)所述代碼所提交分支確定所述代碼所覆蓋的各機(jī)型。
在步驟203中,根據(jù)所述代碼所屬的項(xiàng)目名,創(chuàng)建所述代碼在所述各機(jī)型中的各編譯任務(wù)。
在步驟204中,將編譯消息分別發(fā)送至所述各機(jī)型對應(yīng)的各編譯服務(wù)器,其中,所述編譯消息中攜帶有對應(yīng)的編譯任務(wù)以及所述代碼的相關(guān)信息、所述管理服務(wù)器的地址信息,用于指示所述編譯服務(wù)器按照所述編譯任務(wù)中的編譯策略編譯所述管理服務(wù)器中提交的所述代碼。
在步驟205中,接收所述各機(jī)型對應(yīng)的各編譯服務(wù)器返回的編譯結(jié)果消息,所述編譯結(jié)果消息用于通知所述編譯任務(wù)是否成功,所述編譯結(jié)果消息中攜帶有所述代碼的相關(guān)信息,當(dāng)前編譯服務(wù)器對應(yīng)的機(jī)型以及編譯成功與否的標(biāo)識信息。
在步驟206中,在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息均通知所述編譯任務(wù)成功時,根據(jù)所述管理服務(wù)器的地址信息向所述管理服務(wù)器發(fā)送編譯檢查成功消息,所述編譯檢查成功消息用于通知所述代碼編譯檢查成功,所述編譯檢查成功消息中攜帶有代碼的相關(guān)信息。
在步驟207中,在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息中有通知所述編譯任務(wù)失敗或超出預(yù)設(shè)時間未獲取編譯結(jié)果消息時,向所述管理服務(wù)器發(fā)送編譯檢查失敗消息,所述編譯檢查失敗消息用于表明所述代碼編譯檢查失敗。
圖3是根據(jù)一示例性實(shí)施例示出的一種多代碼庫的代碼編譯檢查方法的流程圖,如圖3所示,該方法可以由服務(wù)器等設(shè)備實(shí)現(xiàn),包括步驟301至307。
在步驟301中,在監(jiān)聽到用戶向管理服務(wù)器提交代碼時,獲取所述代碼的相關(guān)信息和所述代碼提交到的所述管理服務(wù)器的地址信息,其中,所述代碼的相關(guān)信息包括所述代碼的標(biāo)識信息、所屬的項(xiàng)目名和所提交分支。
在步驟302中,根據(jù)所述代碼所提交分支確定所述代碼所覆蓋的各機(jī)型。
在步驟303中,根據(jù)所述代碼所屬的項(xiàng)目名,創(chuàng)建所述代碼在所述各機(jī)型中的各編譯任務(wù)。
在步驟304中,將編譯消息分別發(fā)送至所述各機(jī)型對應(yīng)的各編譯服務(wù)器,其中,所述編譯消息中攜帶有對應(yīng)的編譯任務(wù)以及所述代碼的相關(guān)信息、所述管理服務(wù)器的地址信息,用于指示所述編譯服務(wù)器按照所述編譯任務(wù)中的編譯策略編譯所述管理服務(wù)器中提交的所述代碼。
在步驟305中,接收所述各機(jī)型對應(yīng)的各編譯服務(wù)器返回的編譯結(jié)果消息,所述編譯結(jié)果消息用于通知所述編譯任務(wù)是否成功,所述編譯結(jié)果消息中攜帶有所述代碼的相關(guān)信息,當(dāng)前編譯服務(wù)器對應(yīng)的機(jī)型以及編譯成功與否的標(biāo)識信息。
在步驟306中,在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息均通知所述編譯任務(wù)成功時,根據(jù)所述管理服務(wù)器的地址信息向所述管理服務(wù)器發(fā)送編譯檢查成功消息,所述編譯檢查成功消息用于通知所述代碼編譯檢查成功,所述編譯檢查成功消息中攜帶有代碼的相關(guān)信息。
在步驟307中,向各編譯服務(wù)器發(fā)送代碼更新消息,所述代碼更新消息用于通知所述編譯服務(wù)器更新所述代碼的狀態(tài)。
下述為本公開裝置實(shí)施例,可以用于執(zhí)行本公開方法實(shí)施例。
圖4是根據(jù)一示例性實(shí)施例示出的一種多代碼庫的代碼編譯檢查裝置的框圖,該裝置可以通過軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為電子設(shè)備的部分或者全部。如圖4所示,該多代碼庫的代碼編譯檢查裝置包括:獲取模塊401、確定模塊402、創(chuàng)建模塊403、第一發(fā)送模塊404、接收模塊405和第二發(fā)送模塊406;其中:
獲取模塊401,用于在監(jiān)聽到用戶向管理服務(wù)器提交代碼時,獲取所述代碼的相關(guān)信息和所述代碼提交到的所述管理服務(wù)器的地址信息,其中,所述代碼的相關(guān)信息包括所述代碼的標(biāo)識信息、所屬的項(xiàng)目名和所提交分支;
確定模塊402,用于根據(jù)所述代碼所提交分支確定所述代碼所覆蓋的各機(jī)型;
創(chuàng)建模塊403,用于根據(jù)所述代碼所屬的項(xiàng)目名,創(chuàng)建所述代碼在所述各機(jī)型中的各編譯任務(wù);
第一發(fā)送模塊404,用于將編譯消息分別發(fā)送至所述各機(jī)型對應(yīng)的各編譯服務(wù)器,其中,所述編譯消息中攜帶有對應(yīng)的編譯任務(wù)以及所述代碼的相關(guān)信息、所述管理服務(wù)器的地址信息,用于指示所述編譯服務(wù)器按照所述編譯任務(wù)中的編譯策略編譯所述管理服務(wù)器中提交的所述代碼;
接收模塊405,用于接收所述各機(jī)型對應(yīng)的各編譯服務(wù)器返回的編譯結(jié)果消息,所述編譯結(jié)果消息用于通知所述編譯任務(wù)是否成功;
第二發(fā)送模塊406,用于在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息均通知所述編譯任務(wù)成功時,根據(jù)所述管理服務(wù)器的地址信息向所述管理服務(wù)器發(fā)送編譯檢查成功消息,所述編譯檢查成功消息用于通知所述代碼編譯檢查成功。
作為一種可能的實(shí)施例,上述公開的多代碼庫的代碼編譯檢查裝置還可以被配置成包括第三發(fā)送模塊407,圖5是涉及上述多代碼庫的代碼編譯檢查裝置的框圖,其中:
第三發(fā)送模塊407,用于在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息中有通知所述編譯任務(wù)失敗或超出預(yù)設(shè)時間未獲取編譯結(jié)果消息時,向所述管理服務(wù)器發(fā)送編譯檢查失敗消息,所述編譯檢查失敗消息用于表明所述代碼編譯檢查失敗。
作為一種可能的實(shí)施例,上述公開的多代碼庫的代碼編譯檢查裝置還可以被配置成包括第四發(fā)送模塊408,圖6是涉及上述多代碼庫的代碼編譯檢查裝置的框圖,其中:
第四發(fā)送模塊408,用于在向所述管理服務(wù)器發(fā)送編譯檢查成功消息后,向各編譯服務(wù)器發(fā)送代碼更新消息,所述代碼更新消息用于通知所述編譯服務(wù)器更新所述代碼的狀態(tài)。
作為一種可能的實(shí)施例,上述公開的多代碼庫的代碼編譯檢查裝置中,所述編譯檢查成功消息中攜帶有代碼的相關(guān)信息。
作為一種可能的實(shí)施例,上述公開的多代碼庫的代碼編譯檢查裝置中,所述編譯結(jié)果消息中攜帶有所述代碼的相關(guān)信息,當(dāng)前編譯服務(wù)器對應(yīng)的機(jī)型以及編譯成功與否的標(biāo)識信息。
關(guān)于上述實(shí)施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實(shí)施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說明。
圖7是根據(jù)一示例性實(shí)施例示出的一種多代碼庫的代碼編譯檢查裝置的框圖,該裝置適用于服務(wù)器。裝置700包括處理組件711,其進(jìn)一步包括一個或多個處理器,以及由存儲器712所代表的存儲器資源,用于存儲可由處理組件711的執(zhí)行的指令,例如應(yīng)用程序。存儲器712中存儲的應(yīng)用程序可以包括一個或一個以上的每一個對應(yīng)于一組指令的模塊。此外,處理組件711被配置為執(zhí)行指令,以執(zhí)行上述方法。
裝置700還可以包括一個電源組件713被配置為執(zhí)行裝置700的電源管理,一個有線或無線網(wǎng)絡(luò)接口714被配置為將裝置700連接到網(wǎng)絡(luò),和一個輸入輸出(i/o)接口715。裝置700可以操作基于存儲在存儲器712的操作系統(tǒng),例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或類似。
該非臨時性計算機(jī)可讀存儲介質(zhì),當(dāng)所述存儲介質(zhì)中的指令由裝置700的處理器執(zhí)行時,使得裝置700能夠執(zhí)行上述多代碼庫的代碼編譯檢查裝置,所述方法包括:
在監(jiān)聽到用戶向管理服務(wù)器提交代碼時,獲取所述代碼的相關(guān)信息和所述代碼提交到的所述管理服務(wù)器的地址信息,其中,所述代碼的相關(guān)信息包括所述代碼的標(biāo)識信息、所屬的項(xiàng)目名和所提交分支;
根據(jù)所述代碼所提交分支確定所述代碼所覆蓋的各機(jī)型;
根據(jù)所述代碼所屬的項(xiàng)目名,創(chuàng)建所述代碼在所述各機(jī)型中的各編譯任務(wù);
將編譯消息分別發(fā)送至所述各機(jī)型對應(yīng)的各編譯服務(wù)器,其中,所述編譯消息中攜帶有對應(yīng)的編譯任務(wù)以及所述代碼的相關(guān)信息、所述管理服務(wù)器的地址信息,用于指示所述編譯服務(wù)器按照所述編譯任務(wù)中的編譯策略編譯所述管理服務(wù)器中提交的所述代碼;
接收所述各機(jī)型對應(yīng)的各編譯服務(wù)器返回的編譯結(jié)果消息,所述編譯結(jié)果消息用于通知所述編譯任務(wù)是否成功;
在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息均通知所述編譯任務(wù)成功時,根據(jù)所述管理服務(wù)器的地址信息向所述管理服務(wù)器發(fā)送編譯檢查成功消息,所述編譯檢查成功消息用于通知所述代碼編譯檢查成功。
所述存儲介質(zhì)中的指令還可以包括:
所述方法還包括:
在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息中有通知所述編譯任務(wù)失敗或超出預(yù)設(shè)時間未獲取編譯結(jié)果消息時,向所述管理服務(wù)器發(fā)送編譯檢查失敗消息,所述編譯檢查失敗消息用于表明所述代碼編譯檢查失敗。
所述存儲介質(zhì)中的指令還可以包括:
在向所述管理服務(wù)器發(fā)送編譯檢查成功消息后,所述方法還包括:
向各編譯服務(wù)器發(fā)送代碼更新消息,所述代碼更新消息用于通知所述編譯服務(wù)器更新所述代碼的狀態(tài)。
所述存儲介質(zhì)中的指令還可以包括:
所述編譯檢查成功消息中攜帶有代碼的相關(guān)信息。
所述存儲介質(zhì)中的指令還可以包括:
所述編譯結(jié)果消息中攜帶有所述代碼的相關(guān)信息,當(dāng)前編譯服務(wù)器對應(yīng)的機(jī)型以及編譯成功與否的標(biāo)識信息。
一種多代碼庫的代碼編譯檢查裝置,包括:
處理器;
用于存儲處理器可執(zhí)行指令的存儲器;
其中,所述處理器被配置為:
在監(jiān)聽到用戶向管理服務(wù)器提交代碼時,獲取所述代碼的相關(guān)信息和所述代碼提交到的所述管理服務(wù)器的地址信息,其中,所述代碼的相關(guān)信息包括所述代碼的標(biāo)識信息、所屬的項(xiàng)目名和所提交分支;
根據(jù)所述代碼所提交分支確定所述代碼所覆蓋的各機(jī)型;
根據(jù)所述代碼所屬的項(xiàng)目名,創(chuàng)建所述代碼在所述各機(jī)型中的各編譯任務(wù);
將編譯消息分別發(fā)送至所述各機(jī)型對應(yīng)的各編譯服務(wù)器,其中,所述編譯消息中攜帶有對應(yīng)的編譯任務(wù)以及所述代碼的相關(guān)信息、所述管理服務(wù)器的地址信息,用于指示所述編譯服務(wù)器按照所述編譯任務(wù)中的編譯策略編譯所述管理服務(wù)器中提交的所述代碼;
接收所述各機(jī)型對應(yīng)的各編譯服務(wù)器返回的編譯結(jié)果消息,所述編譯結(jié)果消息用于通知所述編譯任務(wù)是否成功;
在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息均通知所述編譯任務(wù)成功時,根據(jù)所述管理服務(wù)器的地址信息向所述管理服務(wù)器發(fā)送編譯檢查成功消息,所述編譯檢查成功消息用于通知所述代碼編譯檢查成功。
所述處理器還可以被配置為:
所述方法還包括:
在所述各機(jī)型對應(yīng)的編譯服務(wù)器返回的編譯結(jié)果消息中有通知所述編譯任務(wù)失敗或超出預(yù)設(shè)時間未獲取編譯結(jié)果消息時,向所述管理服務(wù)器發(fā)送編譯檢查失敗消息,所述編譯檢查失敗消息用于表明所述代碼編譯檢查失敗。
所述處理器還可以被配置為:
在向所述管理服務(wù)器發(fā)送編譯檢查成功消息后,所述方法還包括:
向各編譯服務(wù)器發(fā)送代碼更新消息,所述代碼更新消息用于通知所述編譯服務(wù)器更新所述代碼的狀態(tài)。
所述處理器還可以被配置為:
所述編譯檢查成功消息中攜帶有代碼的相關(guān)信息。
所述處理器還可以被配置為:
所述編譯結(jié)果消息中攜帶有所述代碼的相關(guān)信息,當(dāng)前編譯服務(wù)器對應(yīng)的機(jī)型以及編譯成功與否的標(biāo)識信息。
本領(lǐng)域技術(shù)人員在考慮說明書及實(shí)踐這里公開的公開后,將容易想到本公開的其它實(shí)施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實(shí)施例僅被視為示例性的,本公開的真正范圍和精神由下面的權(quán)利要求指出。
應(yīng)當(dāng)理解的是,本公開并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本公開的范圍僅由所附的權(quán)利要求來限制。