亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

程序發(fā)布方法及系統(tǒng)與流程

文檔序號(hào):12463121閱讀:343來(lái)源:國(guó)知局
程序發(fā)布方法及系統(tǒng)與流程

本發(fā)明涉及計(jì)算機(jī)軟件領(lǐng)域,尤其涉及一種程序發(fā)布方法及系統(tǒng)。



背景技術(shù):

在軟件項(xiàng)目的開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)人員需要在本地開(kāi)發(fā)并編譯打包,然后遠(yuǎn)程登入服務(wù)器,并且將編譯打包后的軟件包上傳至服務(wù)器,同時(shí)根據(jù)不同的現(xiàn)場(chǎng)環(huán)境規(guī)則,在服務(wù)器上修改與現(xiàn)場(chǎng)環(huán)境相對(duì)應(yīng)的配置文件,接著根據(jù)目的地址而執(zhí)行分發(fā)操作,以完成發(fā)布任務(wù)。在此過(guò)程中,避免不了人為的手動(dòng)打包,其不僅復(fù)雜而且枯燥,對(duì)各工程間的依賴關(guān)系,也需開(kāi)發(fā)人員逐一梳理,很容易疏漏而造成發(fā)布失敗。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的主要目的在于提出一種程序發(fā)布方法及系統(tǒng),旨在提高程序發(fā)布的可靠性。

為實(shí)現(xiàn)上述目的,本發(fā)明提供的一種程序發(fā)布方法,所述程序發(fā)布方法包括:

解析待發(fā)布程序的配置信息獲得所述待發(fā)布程序的代碼庫(kù)路徑,以及所述待發(fā)布程序的主程序和子程序之間的依賴關(guān)系;

根據(jù)所述代碼庫(kù)路徑和所述依賴關(guān)系從代碼庫(kù)中獲取待發(fā)布程序?qū)?yīng)的工程代碼;

根據(jù)所述配置信息中的定制化腳本下載第三方軟件包;

將所述工程代碼進(jìn)行編譯并打包為工程軟件包;

將所述工程軟件包和所述第三方軟件包發(fā)送至目標(biāo)服務(wù)器。

優(yōu)選地,所述將所述工程軟件包和所述第三方軟件包發(fā)送至目標(biāo)服務(wù)器的步驟包括:

根據(jù)所述配置信息中的目標(biāo)服務(wù)器的地址和端口將所述工程軟件包和所述第三方軟件包發(fā)送至所述目標(biāo)服務(wù)器。

優(yōu)選地,所述程序發(fā)布方法還包括:

在所述目標(biāo)服務(wù)器中運(yùn)行所述配置信息中的動(dòng)態(tài)腳本以控制所述待發(fā)布程序的運(yùn)行。

優(yōu)選地,所述將所述工程代碼進(jìn)行編譯并打包為工程軟件包的步驟之后還包括:

將所述工程軟件包、所述第三方軟件包和所述配置信息中的版本號(hào)保存在本地服務(wù)器,并建立所述工程軟件包和所述第三方軟件包與所述配置信息中的版本號(hào)的映射關(guān)系;

所述程序發(fā)布方法還包括:

當(dāng)獲取所述工程代碼或編譯所述工程代碼失敗時(shí),從本地服務(wù)器獲取比所述配置信息中的版本號(hào)低的版本號(hào)的工程軟件包和第三方軟件包,并發(fā)送至目標(biāo)服務(wù)器。

優(yōu)選地,所述根據(jù)所述代碼庫(kù)路徑和所述依賴關(guān)系從代碼庫(kù)中獲取待發(fā)布程序?qū)?yīng)的工程代碼的步驟之后還包括:

將所述工程代碼保存在本地服務(wù)器,并建立所述工程代碼與所述配置信息中的版本號(hào)的映射關(guān)系;

所述程序發(fā)布方法還包括:

當(dāng)編譯所述工程代碼失敗時(shí),根據(jù)所述配置信息中的版本號(hào)從本地服務(wù)器中查找所述待發(fā)布程序的工程代碼。

此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種程序發(fā)布系統(tǒng),所述程序發(fā)布系統(tǒng)包括:

解析模塊,用于解析待發(fā)布程序的配置信息獲得所述待發(fā)布程序的代碼庫(kù)路徑,以及所述待發(fā)布程序的主程序和子程序之間的依賴關(guān)系;

代碼獲取模塊,用于根據(jù)所述代碼庫(kù)路徑和所述依賴關(guān)系從代碼庫(kù)中獲取待發(fā)布程序?qū)?yīng)的工程代碼;

第三方軟件包模塊,用于根據(jù)所述配置信息中的定制化腳本下載第三方軟件包;

編譯模塊,用于將所述工程代碼進(jìn)行編譯并打包為工程軟件包;

發(fā)送模塊,用于將所述工程軟件包和所述第三方軟件包發(fā)送至目標(biāo)服務(wù)器。

優(yōu)選地,所述發(fā)送模塊用于,根據(jù)所述配置信息中的目標(biāo)服務(wù)器的地址和端口將所述工程軟件包和所述第三方軟件包發(fā)送至所述目標(biāo)服務(wù)器。

優(yōu)選地,所述程序發(fā)布系統(tǒng)還包括:

運(yùn)行模塊,用于在所述目標(biāo)服務(wù)器中運(yùn)行所述配置信息中的動(dòng)態(tài)腳本以控制所述待發(fā)布程序的運(yùn)行。

優(yōu)選地,所述程序發(fā)布系統(tǒng)還包括:

存儲(chǔ)模塊,用于將所述工程軟件包、所述第三方軟件包和所述配置信息中的版本號(hào)保存在本地服務(wù)器,并建立所述工程軟件包和所述第三方軟件包與所述配置信息中的版本號(hào)的映射關(guān)系;

回退模塊,用于當(dāng)所述代碼獲取模塊或所述編譯模塊執(zhí)行的操作失敗時(shí),從本地服務(wù)器獲取比所述配置信息中的版本號(hào)低的版本號(hào)的工程軟件包和第三方軟件包,并發(fā)送至目標(biāo)服務(wù)器。

優(yōu)選地,所述存儲(chǔ)模塊還用于,將所述工程代碼保存在本地服務(wù)器,并建立所述工程代碼與所述配置信息中的版本號(hào)的映射關(guān)系;

所述回退模塊還用于,當(dāng)所述編譯模塊執(zhí)行的操作失敗時(shí),根據(jù)所述配置信息中的版本號(hào)從本地服務(wù)器中查找所述待發(fā)布程序的工程代碼。

本發(fā)明提出的技術(shù)方案中,通過(guò)解析配置信息獲得的代碼庫(kù)路徑以及主程序和子程序之間的依賴關(guān)系來(lái)從代碼庫(kù)中獲取工程代碼,對(duì)工程代碼進(jìn)行自動(dòng)編譯獲得工程軟件包,并根據(jù)預(yù)設(shè)配置的定制化腳本獲取第三方軟件包,將工程軟件包和第三方軟件包傳輸?shù)椒?wù)器后即完成程序的發(fā)布,整個(gè)過(guò)程中只需開(kāi)發(fā)人員預(yù)先設(shè)置配置信息即可實(shí)現(xiàn)自動(dòng)執(zhí)行獲取代碼、編譯、打包和上傳的待發(fā)布程序的自動(dòng)化發(fā)布操作,簡(jiǎn)化發(fā)布過(guò)程和提高發(fā)布的可靠性。

附圖說(shuō)明

圖1為本發(fā)明程序發(fā)布方法第一實(shí)施例的流程示意圖;

圖2為本發(fā)明程序發(fā)布方法第二實(shí)施例的流程示意圖;

圖3為本發(fā)明程序發(fā)布方法第三實(shí)施例的流程示意圖;

圖4為本發(fā)明程序發(fā)布系統(tǒng)第一實(shí)施例的功能模塊示意圖;

圖5為本發(fā)明程序發(fā)布系統(tǒng)第二實(shí)施例的功能模塊示意圖;

圖6為本發(fā)明程序發(fā)布系統(tǒng)第三實(shí)施例的功能模塊示意圖。

本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō)明。

具體實(shí)施方式

應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

如圖1所示,本發(fā)明第一實(shí)施例提出的程序發(fā)布方法包括:

步驟S100,解析待發(fā)布程序的配置信息獲得所述待發(fā)布程序的代碼庫(kù)路徑,以及所述待發(fā)布程序的主程序和子程序之間的依賴關(guān)系。

具體地,為了有助于用戶對(duì)發(fā)布的程序進(jìn)行可視化的管理,可以設(shè)置發(fā)布單,發(fā)布單包括待發(fā)布程序的版本號(hào)項(xiàng)、發(fā)布環(huán)境項(xiàng)、服務(wù)器項(xiàng)、解析器項(xiàng)和定制化腳本項(xiàng)等配置信息。多個(gè)開(kāi)發(fā)人員可以根據(jù)發(fā)布單的信息而參與于同一項(xiàng)目,以增加項(xiàng)目開(kāi)發(fā)的透明度,進(jìn)而避免團(tuán)隊(duì)中的其他人員無(wú)法及時(shí)得知整個(gè)發(fā)布進(jìn)程,開(kāi)發(fā)人員也可根據(jù)實(shí)際需要對(duì)發(fā)布單進(jìn)行修改從而對(duì)程序發(fā)布進(jìn)行管理。

發(fā)布環(huán)境包括開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境和生產(chǎn)驗(yàn)證環(huán)境,開(kāi)發(fā)環(huán)境是開(kāi)發(fā)人員進(jìn)行測(cè)試的環(huán)境,測(cè)試環(huán)境是專業(yè)的測(cè)試人員進(jìn)行測(cè)試的環(huán)境,而生產(chǎn)驗(yàn)證環(huán)境則是UAT(User Acceptance Test,用戶驗(yàn)收測(cè)試)環(huán)境。待發(fā)布程序在不同的發(fā)布環(huán)境下對(duì)應(yīng)著不同的代碼,在研發(fā)過(guò)程中,通常是在開(kāi)發(fā)環(huán)境下對(duì)發(fā)布的程序進(jìn)行測(cè)試,然后再在測(cè)試環(huán)境下對(duì)發(fā)布的程序進(jìn)行測(cè)試,最后再在生產(chǎn)驗(yàn)證環(huán)境下對(duì)發(fā)布的程序進(jìn)行測(cè)試。

用戶可對(duì)本次版本所需執(zhí)行的定制化腳本進(jìn)行設(shè)置,根據(jù)該定制化腳本可以從中央倉(cāng)庫(kù),比如Maven中央倉(cāng)庫(kù),下載一些常用的第三方j(luò)ar包從而在后續(xù)運(yùn)行程序時(shí)可以實(shí)現(xiàn)個(gè)性化功能定制,也減輕了開(kāi)發(fā)人員的工作量。

步驟S200,根據(jù)所述代碼庫(kù)路徑和所述依賴關(guān)系從代碼庫(kù)中獲取待發(fā)布程序?qū)?yīng)的工程代碼。

具體地,代碼庫(kù)中有不同版本的代碼,代碼庫(kù)可存儲(chǔ)在代碼服務(wù)器中。解析器解析配置信息后獲得待發(fā)布程序在發(fā)布環(huán)境下的代碼庫(kù)路徑以及主程序、子程序之間的依賴關(guān)系,從而可以根據(jù)該代碼庫(kù)路徑和依賴關(guān)系從代碼庫(kù)中拉取對(duì)應(yīng)的代碼組成完整的代碼源,即待發(fā)布程序在該發(fā)布環(huán)境下的工程代碼??深A(yù)先設(shè)定保存路徑和備份路徑,從而將工程代碼保存在指定區(qū)域。

步驟S300,根據(jù)所述配置信息中的定制化腳本下載第三方軟件包;

步驟S400,將所述工程代碼進(jìn)行編譯并打包為工程軟件包。

具體地,待發(fā)布程序采用的編程語(yǔ)言可以是Java、C/C++,也可采用其他編程語(yǔ)言,而在不同的編程語(yǔ)言下,采用對(duì)應(yīng)的編譯方法以將代碼編譯打包成軟件包。在本實(shí)施例中,待發(fā)布程序?yàn)榛贘ava語(yǔ)言開(kāi)發(fā)的程序。現(xiàn)有技術(shù)中,Java工程在發(fā)布過(guò)程中需要將代碼在JVM虛擬機(jī)上進(jìn)行編譯,并打包成多個(gè)軟件包(jar包),再發(fā)布到相應(yīng)服務(wù)器才可執(zhí)行啟動(dòng)。在此過(guò)程中,避免不了人為的手動(dòng)打包,其不僅復(fù)雜而且枯燥,對(duì)各工程間的依賴關(guān)系,也需發(fā)布人員逐一梳理,很容易疏漏而造成發(fā)布失敗。而本發(fā)明中利用gradle或ant插件等編譯工具自動(dòng)將工程代碼進(jìn)行編譯,并打包為工程jar包,另外,根據(jù)定制化腳本從中央倉(cāng)庫(kù)下載常用的第三方j(luò)ar包,從而解決了jar依賴及工程之間的依賴關(guān)系,進(jìn)而執(zhí)行本地化編譯代碼的服務(wù)??深A(yù)先設(shè)定保存路徑和備份路徑,從而將工程jar包和第三方j(luò)ar包保存在指定區(qū)域。需要說(shuō)明的是,步驟S300和步驟S400的執(zhí)行不分先后順序。

步驟S500,將所述工程軟件包和所述第三方軟件包發(fā)送至目標(biāo)服務(wù)器。

具體地,通過(guò)配置信息獲取服務(wù)器的IP地址及端口,獲取同步服務(wù)連接,將打包的各項(xiàng)資源文件傳輸?shù)椒?wù)器,其中,各項(xiàng)資源文件包括工程jar包和第三方j(luò)ar包。

本發(fā)明提出的技術(shù)方案中,通過(guò)解析配置信息獲得的代碼庫(kù)路徑以及主程序和子程序之間的依賴關(guān)系來(lái)從代碼庫(kù)中獲取工程代碼,對(duì)工程代碼進(jìn)行自動(dòng)編譯獲得工程軟件包,并根據(jù)預(yù)設(shè)配置的定制化腳本獲取第三方軟件包,將工程軟件包和第三方軟件包傳輸?shù)椒?wù)器后即完成程序的發(fā)布,整個(gè)過(guò)程中只需開(kāi)發(fā)人員預(yù)先設(shè)置配置信息即可實(shí)現(xiàn)自動(dòng)執(zhí)行獲取代碼、編譯、打包和上傳的待發(fā)布程序的自動(dòng)化發(fā)布操作,簡(jiǎn)化發(fā)布過(guò)程和提高發(fā)布的可靠性。

進(jìn)一步地,參照?qǐng)D2,為本發(fā)明程序發(fā)布方法的第二實(shí)施例,在上述第一實(shí)施例的基礎(chǔ)上,所述將所述工程軟件包和所述第三方軟件包發(fā)送至目標(biāo)服務(wù)器的步驟包括:

步驟501,根據(jù)所述配置信息中的目標(biāo)服務(wù)器的地址和端口將所述工程軟件包和所述第三方軟件包發(fā)送至所述目標(biāo)服務(wù)器。

具體地,根據(jù)預(yù)先配置的服務(wù)器的IP地址和端口可以將工程軟件包和第三方軟件包傳輸至指定的服務(wù)器。當(dāng)該項(xiàng)目需要發(fā)布的服務(wù)器的IP地址或端口發(fā)生變化時(shí),可以在發(fā)布單中的服務(wù)器項(xiàng)里進(jìn)行相應(yīng)的修改。

向服務(wù)器發(fā)布軟件包后,會(huì)接收一個(gè)軟件包發(fā)布的進(jìn)度信息或狀態(tài)信息,以使開(kāi)發(fā)人員知曉項(xiàng)目發(fā)布的進(jìn)度和狀態(tài)。狀態(tài)信息可以是字符串標(biāo)記,字符串標(biāo)記包括:Success或Failure。若軟件包發(fā)布成功,接收字符串標(biāo)記Success,若軟件包發(fā)布失敗,接收字符串標(biāo)記Failure。這樣用戶可以及時(shí)知曉發(fā)布的狀態(tài),當(dāng)發(fā)布失敗時(shí),用戶可以及時(shí)重新發(fā)布或修改應(yīng)用文件內(nèi)的信息,以保證發(fā)布成功。

另外,還可以配置軟件包自動(dòng)發(fā)布的發(fā)布策略,以設(shè)定多個(gè)軟件包之間的順序,根據(jù)所設(shè)定的多個(gè)軟件包之間的順序,執(zhí)行多個(gè)軟件包一次性同時(shí)發(fā)布的操作。由于一些大型項(xiàng)目需要同時(shí)發(fā)布多個(gè)軟件包,而多個(gè)軟件包之間存在一定的依賴性,因此,需要通過(guò)配置軟件包自動(dòng)發(fā)布的發(fā)布策略,以設(shè)定多個(gè)軟件包之間的先后順序,相當(dāng)于形成一任務(wù)鏈。在設(shè)定完多個(gè)軟件包之間的先后順序之后,可以執(zhí)行多個(gè)軟件包一次性同時(shí)發(fā)布的操作。

進(jìn)一步地,參照?qǐng)D3,為本發(fā)明程序發(fā)布方法的第三實(shí)施例,在上述第一或第二實(shí)施例的基礎(chǔ)上,所述程序發(fā)布方法還包括:

步驟S600,在所述目標(biāo)服務(wù)器中運(yùn)行所述配置信息中的動(dòng)態(tài)腳本以控制所述待發(fā)布程序的運(yùn)行。

具體地,動(dòng)態(tài)腳本包括使所述待發(fā)布程序執(zhí)行運(yùn)行操作、安裝操作和停止操作的指令。開(kāi)發(fā)人員也可對(duì)動(dòng)態(tài)腳本進(jìn)行設(shè)置,動(dòng)態(tài)腳本修改后可以控制待發(fā)布程序在目標(biāo)服務(wù)器中的運(yùn)行,比如修改或刪除某些程序從而改變其在服務(wù)器中的運(yùn)行,從而實(shí)現(xiàn)輕量級(jí)的擴(kuò)展性。

進(jìn)一步地,在上述第一至第三任一實(shí)施例的基礎(chǔ)上,所述將所述工程代碼進(jìn)行編譯并打包為工程軟件包的步驟之后還包括:

步驟S401,將所述工程軟件包、所述第三方軟件包和所述配置信息中的版本號(hào)保存在本地服務(wù)器,并建立所述工程軟件包和所述第三方軟件包與所述配置信息中的版本號(hào)的映射關(guān)系;

所述程序發(fā)布方法還包括:

步驟S701,當(dāng)獲取所述工程代碼或編譯所述工程代碼失敗時(shí),從本地服務(wù)器獲取比所述配置信息中的版本號(hào)低的版本號(hào)的工程軟件包和第三方軟件包,并發(fā)送至目標(biāo)服務(wù)器。

具體地,當(dāng)發(fā)布出錯(cuò),即步驟S200或步驟S300或步驟S400執(zhí)行的操作失敗時(shí),有兩種解決方式:第一種,回退到一個(gè)已有的版本;第二種,查找當(dāng)前發(fā)布版本的工程代碼進(jìn)行修改。

當(dāng)以上獲取工程代碼或者編譯步驟失敗時(shí)通知開(kāi)發(fā)人員錯(cuò)誤信息,終止發(fā)布流程,并可以回退到一個(gè)已有的較低版本,從而提高回退版本的效率。

進(jìn)一步地,所述根據(jù)所述代碼庫(kù)路徑和所述依賴關(guān)系從代碼庫(kù)中獲取待發(fā)布程序?qū)?yīng)的工程代碼的步驟之后還包括:

步驟S201,將所述工程代碼保存在本地服務(wù)器,并建立所述工程代碼與所述配置信息中的版本號(hào)的映射關(guān)系;

所述程序發(fā)布方法還包括:

步驟S702,當(dāng)編譯所述工程代碼失敗時(shí),根據(jù)所述配置信息中的版本號(hào)從本地服務(wù)器中查找所述待發(fā)布程序的工程代碼。

具體地,當(dāng)某個(gè)環(huán)節(jié)出現(xiàn)bug(漏洞)后,可通過(guò)版本號(hào)追溯到當(dāng)時(shí)的環(huán)境,并找到當(dāng)時(shí)的代碼,方便修復(fù)代碼。

參照?qǐng)D4,為本發(fā)明程序發(fā)布系統(tǒng)的第一實(shí)施例,該程序發(fā)布系統(tǒng)包括:

解析模塊100,用于解析待發(fā)布程序的配置信息獲得所述待發(fā)布程序的代碼庫(kù)路徑,以及所述待發(fā)布程序的主程序和子程序之間的依賴關(guān)系。

具體地,為了有助于用戶對(duì)發(fā)布的程序進(jìn)行可視化的管理,可以設(shè)置發(fā)布單,發(fā)布單包括待發(fā)布程序的版本號(hào)項(xiàng)、發(fā)布環(huán)境項(xiàng)、服務(wù)器項(xiàng)、解析器項(xiàng)和定制化腳本項(xiàng)等配置信息。多個(gè)開(kāi)發(fā)人員可以根據(jù)發(fā)布單的信息而參與于同一項(xiàng)目,以增加項(xiàng)目開(kāi)發(fā)的透明度,進(jìn)而避免團(tuán)隊(duì)中的其他人員無(wú)法及時(shí)得知整個(gè)發(fā)布進(jìn)程,開(kāi)發(fā)人員也可根據(jù)實(shí)際需要對(duì)發(fā)布單進(jìn)行修改從而對(duì)程序發(fā)布進(jìn)行管理。

發(fā)布環(huán)境包括開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境和生產(chǎn)驗(yàn)證環(huán)境,開(kāi)發(fā)環(huán)境是開(kāi)發(fā)人員進(jìn)行測(cè)試的環(huán)境,測(cè)試環(huán)境是專業(yè)的測(cè)試人員進(jìn)行測(cè)試的環(huán)境,而生產(chǎn)驗(yàn)證環(huán)境則是UAT(User Acceptance Test,用戶驗(yàn)收測(cè)試)環(huán)境。待發(fā)布程序在不同的發(fā)布環(huán)境下對(duì)應(yīng)著不同的代碼,在研發(fā)過(guò)程中,通常是在開(kāi)發(fā)環(huán)境下對(duì)發(fā)布的程序進(jìn)行測(cè)試,然后再在測(cè)試環(huán)境下對(duì)發(fā)布的程序進(jìn)行測(cè)試,最后再在生產(chǎn)驗(yàn)證環(huán)境下對(duì)發(fā)布的程序進(jìn)行測(cè)試。

用戶可對(duì)本次版本所需執(zhí)行的定制化腳本進(jìn)行設(shè)置,根據(jù)該定制化腳本可以從中央倉(cāng)庫(kù),比如Maven中央倉(cāng)庫(kù),下載一些常用的第三方j(luò)ar包從而在后續(xù)運(yùn)行程序時(shí)可以實(shí)現(xiàn)個(gè)性化功能定制,也減輕了開(kāi)發(fā)人員的工作量。

代碼獲取模塊200,用于根據(jù)所述代碼庫(kù)路徑和所述依賴關(guān)系從代碼庫(kù)中獲取待發(fā)布程序?qū)?yīng)的工程代碼。

具體地,代碼庫(kù)中有不同版本的代碼,代碼庫(kù)可存儲(chǔ)在代碼服務(wù)器中。解析器解析配置信息后獲得待發(fā)布程序在發(fā)布環(huán)境下的代碼庫(kù)路徑以及主程序、子程序之間的依賴關(guān)系,從而可以根據(jù)該代碼庫(kù)路徑和依賴關(guān)系從代碼庫(kù)中拉取對(duì)應(yīng)的代碼組成完整的代碼源,即待發(fā)布程序在該發(fā)布環(huán)境下的工程代碼??深A(yù)先設(shè)定保存路徑和備份路徑,從而將工程代碼保存在指定區(qū)域。

第三方軟件包模塊300,用于根據(jù)所述配置信息中的定制化腳本下載第三方軟件包;

編譯模塊400,用于將所述工程代碼進(jìn)行編譯并打包為工程軟件包。

具體地,待發(fā)布程序采用的編程語(yǔ)言可以是Java、C/C++,也可采用其他編程語(yǔ)言,而在不同的編程語(yǔ)言下,采用對(duì)應(yīng)的編譯方法以將代碼編譯打包成軟件包。在本實(shí)施例中,待發(fā)布程序?yàn)榛贘ava語(yǔ)言開(kāi)發(fā)的程序?,F(xiàn)有技術(shù)中,Java工程在發(fā)布過(guò)程中需要將代碼在JVM虛擬機(jī)上進(jìn)行編譯,并打包成多個(gè)軟件包(jar包),再發(fā)布到相應(yīng)服務(wù)器才可執(zhí)行啟動(dòng)。在此過(guò)程中,避免不了人為的手動(dòng)打包,其不僅復(fù)雜而且枯燥,對(duì)各工程間的依賴關(guān)系,也需發(fā)布人員逐一梳理,很容易疏漏而造成發(fā)布失敗。而本發(fā)明中利用gradle或ant插件等編譯工具自動(dòng)將工程代碼進(jìn)行編譯,并打包為工程jar包,另外,根據(jù)定制化腳本從中央倉(cāng)庫(kù)下載常用的第三方j(luò)ar包,從而解決了jar依賴及工程之間的依賴關(guān)系,進(jìn)而執(zhí)行本地化編譯代碼的服務(wù)??深A(yù)先設(shè)定保存路徑和備份路徑,從而將工程jar包和第三方j(luò)ar包保存在指定區(qū)域。

發(fā)送模塊500,用于將所述工程軟件包和所述第三方軟件包發(fā)送至目標(biāo)服務(wù)器。

具體地,通過(guò)配置信息獲取服務(wù)器的IP地址及端口,獲取同步服務(wù)連接,將打包的各項(xiàng)資源文件傳輸?shù)椒?wù)器,其中,各項(xiàng)資源文件包括工程jar包和第三方j(luò)ar包。

本發(fā)明提出的技術(shù)方案中,通過(guò)解析配置信息獲得的代碼庫(kù)路徑以及主程序和子程序之間的依賴關(guān)系來(lái)從代碼庫(kù)中獲取工程代碼,對(duì)工程代碼進(jìn)行自動(dòng)編譯獲得工程軟件包,并根據(jù)預(yù)設(shè)配置的定制化腳本獲取第三方軟件包,將工程軟件包和第三方軟件包傳輸?shù)椒?wù)器后即完成程序的發(fā)布,整個(gè)過(guò)程中只需開(kāi)發(fā)人員預(yù)先設(shè)置配置信息即可實(shí)現(xiàn)自動(dòng)執(zhí)行獲取代碼、編譯、打包和上傳的待發(fā)布程序的自動(dòng)化發(fā)布操作,簡(jiǎn)化發(fā)布過(guò)程和提高發(fā)布的可靠性。

進(jìn)一步地,在上述程序發(fā)布系統(tǒng)第一實(shí)施例的基礎(chǔ)上,所述發(fā)送模塊500用于,根據(jù)所述配置信息中的目標(biāo)服務(wù)器的地址和端口將所述工程軟件包和所述第三方軟件包發(fā)送至所述目標(biāo)服務(wù)器。

具體地,根據(jù)預(yù)先配置的服務(wù)器的IP地址和端口可以將工程軟件包和第三方軟件包傳輸至指定的服務(wù)器。當(dāng)該項(xiàng)目需要發(fā)布的服務(wù)器的IP地址或端口發(fā)生變化時(shí),可以在發(fā)布單中的服務(wù)器項(xiàng)里進(jìn)行相應(yīng)的修改。

向服務(wù)器發(fā)布軟件包后,會(huì)接收一個(gè)軟件包發(fā)布的進(jìn)度信息或狀態(tài)信息,以使開(kāi)發(fā)人員知曉項(xiàng)目發(fā)布的進(jìn)度和狀態(tài)。狀態(tài)信息可以是字符串標(biāo)記,字符串標(biāo)記包括:Success或Failure。若軟件包發(fā)布成功,接收字符串標(biāo)記Success,若軟件包發(fā)布失敗,接收字符串標(biāo)記Failure。這樣用戶可以及時(shí)知曉發(fā)布的狀態(tài),當(dāng)發(fā)布失敗時(shí),用戶可以及時(shí)重新發(fā)布或修改應(yīng)用文件內(nèi)的信息,以保證發(fā)布成功。

另外,還可以配置軟件包自動(dòng)發(fā)布的發(fā)布策略,以設(shè)定多個(gè)軟件包之間的順序,根據(jù)所設(shè)定的多個(gè)軟件包之間的順序,執(zhí)行多個(gè)軟件包一次性同時(shí)發(fā)布的操作。由于一些大型項(xiàng)目需要同時(shí)發(fā)布多個(gè)軟件包,而多個(gè)軟件包之間存在一定的依賴性,因此,需要通過(guò)配置軟件包自動(dòng)發(fā)布的發(fā)布策略,以設(shè)定多個(gè)軟件包之間的先后順序,相當(dāng)于形成一任務(wù)鏈。在設(shè)定完多個(gè)軟件包之間的先后順序之后,可以執(zhí)行多個(gè)軟件包一次性同時(shí)發(fā)布的操作。

進(jìn)一步地,參照?qǐng)D5,為本發(fā)明程序發(fā)布系統(tǒng)的第二實(shí)施例,在上述程序發(fā)布系統(tǒng)第一實(shí)施例的基礎(chǔ)上,所述程序發(fā)布系統(tǒng)還包括:

運(yùn)行模塊600,用于在所述目標(biāo)服務(wù)器中運(yùn)行所述配置信息中的動(dòng)態(tài)腳本以控制所述待發(fā)布程序的運(yùn)行。

具體地,動(dòng)態(tài)腳本包括使所述待發(fā)布程序執(zhí)行運(yùn)行操作、安裝操作和停止操作的指令。開(kāi)發(fā)人員也可對(duì)動(dòng)態(tài)腳本進(jìn)行設(shè)置,動(dòng)態(tài)腳本修改后可以控制待發(fā)布程序在目標(biāo)服務(wù)器中的運(yùn)行,比如修改或刪除某些程序從而改變其在服務(wù)器中的運(yùn)行,從而實(shí)現(xiàn)輕量級(jí)的擴(kuò)展性。

進(jìn)一步地,參照?qǐng)D6,為本發(fā)明程序發(fā)布系統(tǒng)的第三實(shí)施例,基于本發(fā)明程序發(fā)布系統(tǒng)的第一或第二實(shí)施例,所述程序發(fā)布系統(tǒng)還包括:

存儲(chǔ)模塊800,用于將所述工程軟件包、所述第三方軟件包和所述配置信息中的版本號(hào)保存在本地服務(wù)器,并建立所述工程軟件包和所述第三方軟件包與所述配置信息中的版本號(hào)的映射關(guān)系;

回退模塊700,用于當(dāng)所述代碼獲取模塊或所述編譯模塊執(zhí)行的操作失敗時(shí),從本地服務(wù)器獲取比所述配置信息中的版本號(hào)低的版本號(hào)的工程軟件包和第三方軟件包,并發(fā)送至目標(biāo)服務(wù)器。

具體地,當(dāng)發(fā)布出錯(cuò)時(shí),有兩種解決方式:第一種,回退到一個(gè)已有的版本;第二種,查找當(dāng)前發(fā)布版本的工程代碼進(jìn)行修改。

當(dāng)以上獲取工程代碼或者編譯步驟失敗時(shí)通知開(kāi)發(fā)人員錯(cuò)誤信息,終止發(fā)布流程,并可以回退到一個(gè)已有的較低版本,從而提高回退版本的效率。

進(jìn)一步地,所述存儲(chǔ)模塊800還用于,將所述工程代碼保存在本地服務(wù)器,并建立所述工程代碼與所述配置信息中的版本號(hào)的映射關(guān)系;

所述回退模塊700還用于,當(dāng)所述編譯模塊執(zhí)行的操作失敗時(shí),根據(jù)所述配置信息中的版本號(hào)從本地服務(wù)器中查找所述待發(fā)布程序的工程代碼。

具體地,當(dāng)某個(gè)環(huán)節(jié)出現(xiàn)bug(漏洞)后,可通過(guò)版本號(hào)追溯到當(dāng)時(shí)的環(huán)境,并找到當(dāng)時(shí)的代碼,方便修復(fù)代碼。

以上僅為本發(fā)明的可選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1