本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,特別涉及一種系統(tǒng)自動升級方法。
背景技術(shù):
隨著IT技術(shù)的發(fā)展,軟件規(guī)模的不斷擴(kuò)大,軟件需求也越來越復(fù)雜,一個產(chǎn)品或者項(xiàng)目涉及到的人員和模塊也越來越多,維護(hù)成本也隨之增高,以往都是采取等各部分的開發(fā)完成后再集成產(chǎn)品的模式,但是在程序快速迭代的今天,這種方法弊端很多,開發(fā)完成的功能無法及時的升級到系統(tǒng)中,從而無法驗(yàn)證是否能夠正確解決問題。其次,有的系統(tǒng)由多個節(jié)點(diǎn)組成,并且為多個機(jī)構(gòu)使用,每個機(jī)構(gòu)均部署自己單獨(dú)的一套系統(tǒng),此時,每個機(jī)構(gòu)的配置文件均不一致,升級時,往往需要多個維護(hù)人員一起升級,極為耗費(fèi)時間。在軟件開發(fā)實(shí)踐中,團(tuán)隊(duì)開發(fā)成員經(jīng)常集成他們的工作,通常每個成員每天至少集成一次,也就意味著每天可能會發(fā)生多次集成,所以,一個好的系統(tǒng)管理方案對于整個項(xiàng)目的生命周期尤為重要。因此,如何使系統(tǒng)自動升級,從而提高工作效率,節(jié)省運(yùn)維時間,是本領(lǐng)域技術(shù)人員需要解決的技術(shù)問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種系統(tǒng)自動升級方法,該方法基于Jenkins、RTC和shell實(shí)現(xiàn)系統(tǒng)的自動升級,從而提高工作效率,節(jié)省運(yùn)維時間。
為解決上述技術(shù)問題,本發(fā)明提供一種系統(tǒng)自動升級方法,包括:
RTC服務(wù)器接收輸入的待集成的新版本源代碼;
Jenkins服務(wù)器打包所述RTC服務(wù)器中所述新版本源代碼為程序包,并記錄對應(yīng)的版本號;
shell腳本將所述Jenkins服務(wù)器中打包后的所述程序包下載到系統(tǒng)指定服務(wù)器中完成系統(tǒng)自動升級。
可選的,Jenkins服務(wù)器打包所述RTC服務(wù)器中所述新版本源代碼為程序包,包括:
Jenkins服務(wù)器通過配置RTC獲取所述RTC服務(wù)器中所述新版本源代碼,并打包所述新版本源代碼為Project.war程序包。
可選的,打包所述新版本源代碼為Project.war程序包之后,還包括:
將所述Project.war程序包備份到所述Jenkins服務(wù)器中指定位置。
可選的,本方案還包括:
所述shell腳本在執(zhí)行過程中存在異常時,將異常信息封裝到log日志文件中。
可選的,當(dāng)所述系統(tǒng)升級失敗后,還包括:
所述shell腳本接收輸入的升級版本號,并將所述Jenkins服務(wù)器中打包后的與所述升級版本號對應(yīng)的程序包下載到系統(tǒng)指定服務(wù)器中完成系統(tǒng)自動升級。
可選的,shell腳本將所述Jenkins服務(wù)器中打包后的所述程序包下載到系統(tǒng)指定服務(wù)器中完成系統(tǒng)自動升級,包括:
在所述系統(tǒng)指定服務(wù)器中設(shè)置shell腳本;
所述shell腳本停止所述系統(tǒng)指定服務(wù)器的中間件服務(wù);
備份所述系統(tǒng)指定服務(wù)器中原有的配置文件以及程序;
根據(jù)Jenkins鏈接,將所述Jenkins服務(wù)器中打包后的所述程序包下載到系統(tǒng)指定服務(wù)器的中間件中進(jìn)行系統(tǒng)升級;
在升級完成后,將備份的原有的配置文件以及程序拷貝回升級后的代碼中;
所述shell腳本命令行啟動所述系統(tǒng)指定服務(wù)器的中間件服務(wù)。
可選的,所述備份所述系統(tǒng)指定服務(wù)器中原有的配置文件以及程序,包括:
所述shell腳本創(chuàng)建配置文件的備份文件夾,并將所述系統(tǒng)指定服務(wù)器中原有的配置文件拷貝到所述備份文件夾對應(yīng)目錄中;
所述shell腳本創(chuàng)建程序備份目錄,并將所述系統(tǒng)指定服務(wù)器中原有的程序拷貝到程序備份目錄中。
本發(fā)明所提供的一種系統(tǒng)自動升級方法,包括:RTC服務(wù)器接收輸入的待集成的新版本源代碼;Jenkins服務(wù)器打包所述RTC服務(wù)器中所述新版本源代碼為程序包,并記錄對應(yīng)的版本號;shell腳本將所述Jenkins服務(wù)器中打包后的所述程序包下載到系統(tǒng)指定服務(wù)器中完成系統(tǒng)自動升級;
可見,該方法基于Jenkins、RTC和shell實(shí)現(xiàn)系統(tǒng)自動升級即RTC服務(wù)器實(shí)現(xiàn)代碼的版本管理,Jenkins服務(wù)器通過連接RTC服務(wù)器實(shí)現(xiàn)代碼的持續(xù)集成,通過shell腳本實(shí)現(xiàn)系統(tǒng)的自動升級,從而提高工作效率,節(jié)省運(yùn)維時間。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例所提供的系統(tǒng)自動升級方法的流程圖;
圖2為本發(fā)明實(shí)施例所提供的系統(tǒng)自動升級方法的原理示意圖;
圖3為本發(fā)明實(shí)施例所提供的shell腳本執(zhí)行原理示意圖。
具體實(shí)施方式
本發(fā)明的核心是提供一種系統(tǒng)自動升級方法,該方法基于Jenkins、RTC和shell實(shí)現(xiàn)系統(tǒng)的自動升級,從而提高工作效率,節(jié)省運(yùn)維時間。
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
引入持續(xù)集成自動升級方案可以減少重復(fù)性工作,實(shí)現(xiàn)代碼的快速構(gòu)建、代碼檢測、打包、部署、啟動等一系列軟件開發(fā)過程,一天中進(jìn)行多次的集成,快速部署,便于缺陷的驗(yàn)證,極大提高工作效率,節(jié)省大量運(yùn)維時間。
本實(shí)施例中Jenkins是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,功能包括:1、持續(xù)的軟件版本發(fā)布/測試項(xiàng)目。2、監(jiān)控外部調(diào)用執(zhí)行的工作。RTC是Java項(xiàng)目創(chuàng)建及變更管理和版本控制。本實(shí)施例基于Jenkins、RTC和shell實(shí)現(xiàn)系統(tǒng)自動升級。具體請參考圖1,圖1為本發(fā)明實(shí)施例所提供的系統(tǒng)自動升級方法的流程圖;該方法可以包括:
S100、RTC服務(wù)器接收輸入的待集成的新版本源代碼。
其中,本實(shí)施例并不限定RTC服務(wù)器接收待集成的新版本源代碼的輸入形式。其可以由項(xiàng)目開發(fā)人員手動輸入新的待集成的新版本源代碼。也可以由項(xiàng)目開發(fā)人員語音輸入新的待集成的新版本源代碼等。該步驟是為了保證RTC服務(wù)器存有最新版本代碼。
S110、Jenkins服務(wù)器打包RTC服務(wù)器中新版本源代碼為程序包,并記錄對應(yīng)的版本號。
其中,在Jenkins平臺上配置RTC,并使用Jenkins打包RTC服務(wù)器上的最新程序,并記錄版本號,以便于系統(tǒng)升級及版本記錄。即Jenkins服務(wù)器通過配置RTC獲取RTC服務(wù)器中新版本源代碼,并打包新版本源代碼為Project.war程序包。該步驟中Jenkins服務(wù)器與RTC服務(wù)器集成在一起,通過Jenkins可獲取最新程序包Project.war。
進(jìn)一步,為了提高系統(tǒng)的可靠性,避免出現(xiàn)在系統(tǒng)升級失敗的情況下,系統(tǒng)無法正常使用的狀況。優(yōu)選的,本實(shí)施例可以將程序進(jìn)行備份,即本實(shí)施例中打包新版本源代碼為Project.war程序包之后可以還包括:
將Project.war程序包備份到Jenkins服務(wù)器中指定位置。
具體的,通過Jenkins將開發(fā)人員提交的最新程序打成war包,并存放于Jenkins服務(wù)器中,實(shí)現(xiàn)了所需版本的程序的備份,便于升級失敗的情況下系統(tǒng)的恢復(fù)。
S120、shell腳本將Jenkins服務(wù)器中打包后的程序包下載到系統(tǒng)指定服務(wù)器中完成系統(tǒng)自動升級。
其中,這里的系統(tǒng)指定服務(wù)器可以是系統(tǒng)中全部的服務(wù)器,也可以是用戶選定的系統(tǒng)中需要進(jìn)行升級的服務(wù)器。本實(shí)施例對比并不進(jìn)行限定。
具體的,shell腳本將打包后的程序下載到系統(tǒng)指定服務(wù)器中完成系統(tǒng)自動升級。這里的shell腳本進(jìn)行升級的過程可以是在監(jiān)測到Jenkins服務(wù)器中打包生成了新的程序包后就可以執(zhí)行升級操作。也可是根據(jù)用戶指定需要下載的程序包后再執(zhí)行升級操作,例如用戶可以指定升級代碼的版本號,這樣shell腳本將Jenkins服務(wù)器中對應(yīng)版本號的程序包下載到系統(tǒng)指定服務(wù)器中完成系統(tǒng)自動升級。即通過版本號,可以升級指定版本的程序包,使升級更加靈活。本實(shí)施例對比并不進(jìn)行限定。shell腳本只需要可以完成對Jenkins服務(wù)器中打包后的程序下載到指定服務(wù)器中完成升級即可。
具體的,RTC服務(wù)器實(shí)現(xiàn)系統(tǒng)的版本管理,Jenkins服務(wù)器作為持續(xù)集成工具,shell腳本作為自動升級腳本。即Jenkins通過連接RTC服務(wù)器實(shí)現(xiàn)代碼的持續(xù)集成,通過shell腳本實(shí)現(xiàn)系統(tǒng)的自動升級。
基于上述技術(shù)方案,本發(fā)明實(shí)施例提的系統(tǒng)自動升級方法,基于Jenkins、RTC和shell實(shí)現(xiàn)系統(tǒng)的自動升級,從而提高工作效率,節(jié)省運(yùn)維時間。
基于上述實(shí)施例,本實(shí)施例還可以包括:
shell腳本在執(zhí)行過程中存在異常時,將異常信息封裝到log日志文件中。
具體的,可以將執(zhí)行過程中的錯誤日志會輸出到日志文件下保存以供查看;從而可以使技術(shù)人員能夠快速確定錯誤原因,能夠及時對系統(tǒng)進(jìn)行修正。防止系統(tǒng)在升級后存在安全漏洞。且通過日志形式節(jié)省用戶查找錯誤的時間。
基于上述任意實(shí)施例,本實(shí)施例還可以包括:當(dāng)系統(tǒng)升級失敗后shell腳本接收輸入的升級版本號,并將Jenkins服務(wù)器中打包后的與升級版本號對應(yīng)的程序包下載到系統(tǒng)指定服務(wù)器中完成系統(tǒng)自動升級。
具體的,該過程可以在程序升級失敗,可通過版本號,恢復(fù)系統(tǒng)至任意版本。由于開發(fā)者的程序問題而導(dǎo)致的系統(tǒng)升級失敗,想要進(jìn)行系統(tǒng)恢復(fù),本實(shí)施例無需人為的修改代碼至上一版本,重新打包升級,只需要再一次執(zhí)行shell腳本,參數(shù)為上一可用版本的版本號,執(zhí)行成功后,便可完成系統(tǒng)的恢復(fù),極大地提高了方案的容錯性。
基于上述技術(shù)方案,本發(fā)明實(shí)施例提的系統(tǒng)自動升級方法,使用IBM公司提供的RTC可以高效的管理代碼版本并可以實(shí)時獲取RTC服務(wù)器中最新代碼;使用Jenkins平臺并配置RTC可以持續(xù)的集成代碼,并將代碼打包成Project.war的形式;使用shell腳本可將Jenkins服務(wù)器中的代碼下載到指定服務(wù)器的中間件容器中,并完成中間件的啟停。即通過此步驟,無需人工將Jenkins集成的Project.war拷貝到服務(wù)器中,執(zhí)行shell腳本便可實(shí)現(xiàn)代碼的快速部署,中間件的自動啟停;該方法還提供了日志查看功能,將錯誤信息輸出到log日志文件中,便于查找問題;如果系統(tǒng)升級失敗,通過執(zhí)行shell腳本,升級參數(shù)為版本號的系統(tǒng)以實(shí)現(xiàn)系統(tǒng)的快速恢復(fù)。
基于上述任意實(shí)施例,為了在完成系統(tǒng)升級的同時,使所有應(yīng)有的配置文件均保持原有配置,不發(fā)生變化,從而不需要當(dāng)系統(tǒng)中配置文件不一致時,需要多個維護(hù)人員同時進(jìn)行升級維護(hù)。從而提升系統(tǒng)升級效率。例如,當(dāng)系統(tǒng)需要對接多個機(jī)構(gòu),甚至每個機(jī)構(gòu)有多套測試環(huán)境時,使用shell腳本完成程序升級后,每個機(jī)構(gòu)獨(dú)有的數(shù)據(jù)庫配置文件、參數(shù)配置文件等均不會發(fā)生變化,保持原有配置,避免了每次升級程序后,耗費(fèi)大量時間去每個系統(tǒng)修改配置文件。即本實(shí)施例中shell腳本將Jenkins服務(wù)器中打包后的程序包下載到系統(tǒng)指定服務(wù)器中完成系統(tǒng)自動升級可以包括:
在系統(tǒng)指定服務(wù)器中設(shè)置shell腳本。
shell腳本停止系統(tǒng)指定服務(wù)器的中間件服務(wù)。
備份系統(tǒng)指定服務(wù)器中原有的配置文件以及程序。
根據(jù)Jenkins鏈接,將Jenkins服務(wù)器中打包后的程序包下載到系統(tǒng)指定服務(wù)器的中間件中進(jìn)行系統(tǒng)升級。
在升級完成后,將備份的原有的配置文件以及程序拷貝回升級后的代碼中。
shell腳本命令行啟動系統(tǒng)指定服務(wù)器的中間件服務(wù)。
其中,備份系統(tǒng)指定服務(wù)器中原有的配置文件以及程序可以包括:
shell腳本創(chuàng)建配置文件的備份文件夾,并將系統(tǒng)指定服務(wù)器中原有的配置文件拷貝到備份文件夾對應(yīng)目錄中。
shell腳本創(chuàng)建程序備份目錄,并將系統(tǒng)指定服務(wù)器中原有的程序拷貝到程序備份目錄中。
具體的,升級系統(tǒng)前需備份源程序,在shell腳本中,首先要停止服務(wù)器,完成源代碼的備份,并創(chuàng)建配置文件備份目錄,拷貝出原有的配置文件到備份目錄中。在shell腳本中,需將Jenkins中要升級的代碼鏈接集成到shell腳本中,以實(shí)現(xiàn)代碼的下載,在shell腳本中,需指明代碼下載到服務(wù)器中的路徑,一般是中間件的應(yīng)用程序目錄,下載完畢后,通過解壓縮命令解壓Project.war文件,完成此步后,即完成了代碼的升級。代碼升級完成后,將備份目錄中的配置文件拷貝到新代碼中相應(yīng)的配置文件目錄中,以保持系統(tǒng)原有配置不變,此步shell腳本編寫的核心,通過此步,不必在升級完代碼之后,再進(jìn)行繁瑣的配置文件修改,尤其是針對一套系統(tǒng)有多個應(yīng)用節(jié)點(diǎn),或者一套系統(tǒng)對接多個機(jī)構(gòu),而每個機(jī)構(gòu)的配置均不一致的情況下,效率提升極為顯著。
下面以linux服務(wù)器為例說明本實(shí)施例,請參考圖2和圖3,圖中各步驟內(nèi)容如下:
S1、開發(fā)人員向RTC服務(wù)器提交待集成的源代碼;
S2、搭建Jenkins平臺,在所述的平臺上集成RTC,并預(yù)先在Jenkins平臺上配置發(fā)布機(jī)制;
S3、使用Jenkins構(gòu)建所有應(yīng)用的代碼,并記錄其版本號;
S4、將預(yù)先編寫好的shell腳本置于待升級系統(tǒng)的linux服務(wù)器中某一目錄,執(zhí)行shell腳本,腳本的參數(shù)為版本號,通過此步,主要完成了以下過程:原程序(應(yīng)用服務(wù)備份)、原配置文件備份,RTC服務(wù)器中最新代碼的下載,程序升級,中間件啟動,升級日志輸出。
S5、查看升級過程中的log日志,若無異常,則升級成功。
如圖3所示,展示了上述步驟S4中shell腳本執(zhí)行的原理圖,主要包括以下步驟:
S41、在待升級系統(tǒng)所在的linux服務(wù)器中放置shell腳本,按照./xxx.shell N(N為Jenkins中打包的代碼的版本號)的格式執(zhí)行shell腳本;
S42、shell腳本首先停止中間件服務(wù);
S43、shell腳本創(chuàng)建配置文件備份文件夾,創(chuàng)建完畢后,將系統(tǒng)中的原配置文件拷貝到備份目錄中;
S44、shell腳本創(chuàng)建程序備份目錄,并將原程序進(jìn)行備份;
S45、shell腳本中集成了Jenkins鏈接,根據(jù)代碼版本號可從Jenkins服務(wù)器中下載指定版本的代碼到中間件中進(jìn)行系統(tǒng)升級;
S46、代碼升級完成之后,shell腳本將S43中備份的配置文件拷貝回S45升級完成后的代碼中,以使升級之后的配置文件與升級前保持一致;
S47、shell腳本命令行啟動中間件;
S48、shell腳本執(zhí)行過程中會將升級日志輸出到log日志文件中,此處可單獨(dú)輸出錯誤日志或者輸出全部執(zhí)行過程日志;查看日志,若無錯誤,系統(tǒng)升級成功。
基于上述技術(shù)方案,本發(fā)明實(shí)施例提的系統(tǒng)自動升級方法,將Jenkins與RTC集成到一起,可實(shí)現(xiàn)代碼的快速集成、打包;使用Jenkins打包代碼后,可記錄其版本號,通過shell腳本及版本號可實(shí)現(xiàn)任意版本的升級或恢復(fù);使用shell腳本集成Jenkins鏈接,可以將打包而來的Project.war直接下載到中間件目錄下,并實(shí)程序快速部署及啟停;升級過程中,系統(tǒng)服務(wù)器中的配置文件需先備份到指定目錄下,當(dāng)新的程序包部署完畢后,再將備份的配置文件拷貝回部署完畢的程序包中,經(jīng)過此步驟,保證了服務(wù)器中配置文件與之前一致,而不會被開發(fā)環(huán)境的配置文件所覆蓋,在實(shí)際應(yīng)用中可大大提高部署效率。shell腳本執(zhí)行過程中可將錯誤內(nèi)容輸出到log文件中,以供查看排錯。當(dāng)系統(tǒng)升級失敗后,通過入?yún)姹咎柤皊hell腳本可實(shí)現(xiàn)系統(tǒng)快速恢復(fù)到任一版本。從而提高工作效率,節(jié)省運(yùn)維時間。
以上對本發(fā)明所提供的一種系統(tǒng)自動升級方法進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。