本發(fā)明涉及移動(dòng)應(yīng)用開發(fā),尤其涉及一種基于組件版本滾動(dòng)管理的移動(dòng)應(yīng)用構(gòu)建方法和系統(tǒng)。
背景技術(shù):
1、在安卓(android)系統(tǒng)中,一般使用gradle(一種項(xiàng)目自動(dòng)化構(gòu)建開源工具)進(jìn)行應(yīng)用的編譯打包,組件描述信息寫在gradle.properties里,如下圖,oa是組件名,版本號是2.2.0。
2、在ios系統(tǒng)中,一般使用xcode進(jìn)行編譯打包,組件描述信息卸載podfile里,ylcommonui是組件名稱,使用類似“branch=>master”的形式表示版本號,箭頭后指向的可能是分支名,也可能是gitlab?tag版本號。
3、由于移動(dòng)應(yīng)用會(huì)包含很多組件,實(shí)際開發(fā)中會(huì)分多個(gè)組進(jìn)行開發(fā),不同團(tuán)隊(duì)對不同組件的開發(fā)的組件會(huì)有交叉,而且每個(gè)團(tuán)隊(duì)在開發(fā)前設(shè)計(jì)到哪些組件是不確定的,因此涉及到頻繁的配置文件和組件版本號的管理等問題。目前,移動(dòng)端組件化是很普遍的問題,對于多團(tuán)隊(duì)來說溝通定義本次應(yīng)用發(fā)版相關(guān)的組件版本信息是個(gè)很頭疼的問題。
4、在現(xiàn)有技術(shù)中,主要通過每次多人共同維護(hù)一個(gè)配置文件的方式來解決,或者通過團(tuán)隊(duì)內(nèi)或跨團(tuán)隊(duì)的頻繁溝通以在代碼里直接修改配置文件內(nèi)容,以在打包時(shí)直接使用的方式來解決應(yīng)用發(fā)版相關(guān)的組件版本信息保持一致的問題。
5、現(xiàn)有技術(shù)存在的問題包含:(1)人工溝通成本高、效率低下。(2)人工修改組件版本號,容易遺漏或者弄錯(cuò)組件版本號。(3)每次移動(dòng)應(yīng)用發(fā)版打包使用組件版本號是基于開發(fā)人員提交的代碼定義,而不是自動(dòng)生成,可能導(dǎo)致配信息錯(cuò)誤。
6、本發(fā)明所要克服的技術(shù)問題包含:
7、(1)涉及組件開發(fā)的多個(gè)開發(fā)組如何統(tǒng)一組件版本號。
8、(2)如何避免團(tuán)隊(duì)內(nèi)或跨團(tuán)隊(duì)頻繁的溝通配置文件的修改。
9、(3)新增組件開發(fā)時(shí),如何快速同步組件版本號。
10、(4)移動(dòng)應(yīng)用編譯打包時(shí),如何自動(dòng)修改配置文件的組件版本號。
11、(5)移動(dòng)應(yīng)用發(fā)版后,如何自動(dòng)更新默認(rèn)組件版本號。
技術(shù)實(shí)現(xiàn)思路
1、鑒于此,本發(fā)明實(shí)施例提供了一種基于組件版本滾動(dòng)管理的移動(dòng)應(yīng)用構(gòu)建方法和系統(tǒng),以消除或改善現(xiàn)有技術(shù)中存在的一個(gè)或更多個(gè)缺陷。
2、本發(fā)明的一個(gè)方面提供了一種基于組件版本滾動(dòng)管理的移動(dòng)應(yīng)用構(gòu)建方法,該方法包括以下步驟:在移動(dòng)應(yīng)用創(chuàng)建的初始化階段,cicd平臺獲取由開發(fā)人員預(yù)先定義的移動(dòng)應(yīng)用包含的組件的默認(rèn)組件信息和預(yù)先定義的基于后續(xù)發(fā)版時(shí)間的組件版本號信息,所述默認(rèn)組件信息包含關(guān)聯(lián)的移動(dòng)應(yīng)用唯一標(biāo)識和當(dāng)前版本號,所述組件版本號信息包含各個(gè)發(fā)版時(shí)間涉及修改的組件版本號信息和默認(rèn)組件版本號信息;在每個(gè)發(fā)版時(shí)間,cicd平臺獲取移動(dòng)應(yīng)用唯一標(biāo)識和基于發(fā)版時(shí)間的組件版本號信息的關(guān)聯(lián)數(shù)據(jù);每當(dāng)cicd平臺接收到由開發(fā)人員創(chuàng)建的配置文件生成任務(wù),cicd平臺利用ansible腳本從已構(gòu)建的移動(dòng)應(yīng)用中獲取當(dāng)前配置文件,按照預(yù)先定義的基于本次發(fā)版時(shí)間的組件版本號信息和所述默認(rèn)組件信息重新生成本次發(fā)版時(shí)間的配置文件,重新生成的配置文件覆蓋在先的配置文件,并將重新生成的配置文件上傳到用于管理配置文件的云平臺,以使得在本地開發(fā)和移動(dòng)應(yīng)用出包過程中能夠從云平臺獲取本次發(fā)版時(shí)間的配置文件;在每次移動(dòng)應(yīng)用出包過程中,從云平臺獲取本次發(fā)版時(shí)間的配置文件,基于獲取的配置文件、所述關(guān)聯(lián)的移動(dòng)應(yīng)用唯一標(biāo)識和所述關(guān)聯(lián)數(shù)據(jù)流水線式編譯打包,得到本次發(fā)版時(shí)間的上線應(yīng)用包;在每次移動(dòng)應(yīng)用上線完成后,cicd平臺基于本次發(fā)版時(shí)間對應(yīng)的組件版本號信息更新所述默認(rèn)組件信息。
3、在本發(fā)明的一些實(shí)施例中,所述默認(rèn)組件信息還包含組件基本描述信息,所述組件基本描述信息包含組件名稱、組件版本號、組件功能描述、作者信息、支持信息中的多種;所述方法還包括:在開發(fā)人員進(jìn)行本地開發(fā)的過程中,從所述云平臺獲取本次發(fā)版時(shí)間的配置文件。
4、在本發(fā)明的一些實(shí)施例中,所述cicd平臺利用ansible腳本從已構(gòu)建的移動(dòng)應(yīng)用中獲取當(dāng)前配置文件的步驟,包含:所述cicd平臺利用ansible腳本克隆已構(gòu)建的移動(dòng)應(yīng)用的代碼,在克隆的代碼中找到當(dāng)前配置文件。
5、在本發(fā)明的一些實(shí)施例中,所述按照預(yù)先定義的基于本次發(fā)版時(shí)間的組件版本號信息和所述默認(rèn)組件信息重新生成本次發(fā)版時(shí)間的配置文件的步驟,包括:在獲取的當(dāng)前配置文件的基礎(chǔ)上,按照預(yù)先定義的基于本次發(fā)版時(shí)間的組件版本號信息修改所述當(dāng)前配置文件包含的組件版本號信息,對于不涉及修改的組件按照所述默認(rèn)組件信息的記載,重新生成本次發(fā)版時(shí)間的配置文件。
6、在本發(fā)明的一些實(shí)施例中,所述用于管理配置文件的云平臺包含gitlab、github、bitbucket、azure?devops和gitea平臺中的任一種。
7、在本發(fā)明的一些實(shí)施例中,所述基于獲取的配置文件、所述關(guān)聯(lián)的移動(dòng)應(yīng)用唯一標(biāo)識和所述關(guān)聯(lián)數(shù)據(jù)流水線式編譯打包的步驟,包括:在移動(dòng)應(yīng)用出包過程中,觸發(fā)編譯打包任務(wù)并獲取移動(dòng)應(yīng)用信息,通過移動(dòng)應(yīng)用信息進(jìn)行代碼克隆,通過關(guān)聯(lián)數(shù)據(jù)和關(guān)聯(lián)的移動(dòng)應(yīng)用唯一標(biāo)識將獲取的配置文件替代移動(dòng)應(yīng)用代碼里包含的原本的配置文件,對替代后的移動(dòng)應(yīng)用代碼進(jìn)行編譯打包。
8、在本發(fā)明的一些實(shí)施例中,在移動(dòng)應(yīng)用出包過程中的編譯打包任務(wù)通過xcode工具或gradle工具來實(shí)現(xiàn)。
9、本發(fā)明的另一方面提供了一種基于組件版本滾動(dòng)管理的移動(dòng)應(yīng)用構(gòu)建系統(tǒng),該系統(tǒng)包括處理器、存儲器及存儲在存儲器上的計(jì)算機(jī)程序/指令,所述處理器用于執(zhí)行所述計(jì)算機(jī)程序/指令,當(dāng)所述計(jì)算機(jī)程序/指令被執(zhí)行時(shí)該系統(tǒng)實(shí)現(xiàn)如上實(shí)施例中任一項(xiàng)所述方法的步驟。
10、本發(fā)明的另一方面提供了一種計(jì)算機(jī)可讀存儲介質(zhì),其上存儲有計(jì)算機(jī)程序/指令,該計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上實(shí)施例中任一項(xiàng)所述方法的步驟。
11、本發(fā)明的另一方面提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序/指令,該計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上實(shí)施例中任一項(xiàng)所述方法的步驟。
12、本發(fā)明所提出的基于組件版本滾動(dòng)管理的移動(dòng)應(yīng)用構(gòu)建方法和系統(tǒng),能夠降低移動(dòng)應(yīng)用構(gòu)建過程中的人工溝通成本,減少人工操作,保障移動(dòng)應(yīng)用構(gòu)建的穩(wěn)定性和安全性,實(shí)現(xiàn)組件版本管理的自動(dòng)化,不易出錯(cuò)遺漏,且組件版本管理的效率顯著高于人工。本發(fā)明所提出的方法和系統(tǒng)能夠在多人、多團(tuán)隊(duì)協(xié)作構(gòu)建移動(dòng)應(yīng)用過程中實(shí)現(xiàn)高效的組件版本號滾動(dòng)管理以及與打包編譯結(jié)合。
13、本發(fā)明的附加優(yōu)點(diǎn)、目的,以及特征將在下面的描述中將部分地加以闡述,且將對于本領(lǐng)域普通技術(shù)人員在研究下文后部分地變得明顯,或者可以根據(jù)本發(fā)明的實(shí)踐而獲知。本發(fā)明的目的和其它優(yōu)點(diǎn)可以通過在說明書以及附圖中具體指出的結(jié)構(gòu)實(shí)現(xiàn)到并獲得。
14、本領(lǐng)域技術(shù)人員將會(huì)理解的是,能夠用本發(fā)明實(shí)現(xiàn)的目的和優(yōu)點(diǎn)不限于以上具體所述,并且根據(jù)以下詳細(xì)說明將更清楚地理解本發(fā)明能夠?qū)崿F(xiàn)的上述和其他目的。
1.一種基于組件版本滾動(dòng)管理的移動(dòng)應(yīng)用構(gòu)建方法,其特征在于,所述方法包括以下步驟:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述默認(rèn)組件信息還包含組件基本描述信息,所述組件基本描述信息包含組件名稱、組件版本號、組件功能描述、作者信息、支持信息中的多種;
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述cicd平臺利用ansible腳本從已構(gòu)建的移動(dòng)應(yīng)用中獲取當(dāng)前配置文件的步驟,包含:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述按照預(yù)先定義的基于本次發(fā)版時(shí)間的組件版本號信息和所述默認(rèn)組件信息重新生成本次發(fā)版時(shí)間的配置文件的步驟,包括:
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述用于管理配置文件的云平臺包含gitlab、github、bitbucket、azure?devops和gitea平臺中的任一種。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述基于獲取的配置文件、所述關(guān)聯(lián)的移動(dòng)應(yīng)用唯一標(biāo)識和所述關(guān)聯(lián)數(shù)據(jù)流水線式編譯打包的步驟,包括:
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在移動(dòng)應(yīng)用出包過程中的編譯打包任務(wù)通過xcode工具或gradle工具來實(shí)現(xiàn)。
8.一種基于組件版本滾動(dòng)管理的移動(dòng)應(yīng)用構(gòu)建系統(tǒng),包括處理器、存儲器及存儲在存儲器上的計(jì)算機(jī)程序/指令,其特征在于,所述處理器用于執(zhí)行所述計(jì)算機(jī)程序/指令,當(dāng)所述計(jì)算機(jī)程序/指令被執(zhí)行時(shí)該系統(tǒng)實(shí)現(xiàn)如權(quán)利要求1至7中任一項(xiàng)所述方法的步驟。
9.一種計(jì)算機(jī)可讀存儲介質(zhì),其上存儲有計(jì)算機(jī)程序/指令,其特征在于,該計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至7中任一項(xiàng)所述方法的步驟。
10.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序/指令,其特征在于,該計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1至7中任一項(xiàng)所述方法的步驟。