穆榮,劉欣,王曉路
(西安科技大學(xué)信息網(wǎng)絡(luò)中心,陜西西安710054)
基于Jenkins的WPS for iOS的自動(dòng)構(gòu)建服務(wù)器的設(shè)計(jì)
穆榮,劉欣,王曉路
(西安科技大學(xué)信息網(wǎng)絡(luò)中心,陜西西安710054)
通過了解持續(xù)集成的研究現(xiàn)狀,分析了構(gòu)建WPS所存在的問題,設(shè)計(jì)了基于Jenkins服務(wù)器自動(dòng)構(gòu)建iOS測(cè)試包的系統(tǒng),驅(qū)動(dòng)Xcode自動(dòng)更改項(xiàng)目配置文件參數(shù),實(shí)現(xiàn)了定時(shí)構(gòu)建、一鍵構(gòu)建、定制化構(gòu)建和郵件通知等功能,消除了人工配置Xcode進(jìn)行構(gòu)建的煩瑣性,縮短了構(gòu)建時(shí)間,減輕了工作的壓力。該服務(wù)器能夠讓多步操作變成一鍵操作,還可以定時(shí)自動(dòng)構(gòu)建,最后群發(fā)實(shí)時(shí)郵件通知構(gòu)建結(jié)果,使工作效率得到了提升。
持續(xù)集成;Jenkins;Xcode;自動(dòng)構(gòu)建
眾所周知,軟件產(chǎn)品開發(fā)的時(shí)機(jī)和速度決定了產(chǎn)品的受歡迎程度,更有甚者,剛剛研發(fā)的產(chǎn)品一上市就有可能被淘汰。因此,這使得開發(fā)軟件產(chǎn)品的復(fù)雜程度提升不少。為了縮減開發(fā)時(shí)間,除了在技術(shù)上要不斷提升,且需要進(jìn)一步充實(shí)開發(fā)團(tuán)隊(duì)。軟件研發(fā)必然要面臨如何在保證整個(gè)團(tuán)隊(duì)協(xié)同、高效工作的同時(shí),確保軟件產(chǎn)品的質(zhì)量的問題。持續(xù)集成就是在這樣的大環(huán)境下不斷發(fā)展起來的,且持續(xù)集成可以很好地解決上述問題。
持續(xù)集成主要就是要求研發(fā)團(tuán)隊(duì)實(shí)時(shí)集成開發(fā)人員的代碼及需求,需要大量進(jìn)行構(gòu)建工作。傳統(tǒng)的構(gòu)建打包方式非常煩瑣,每次打包都需要針對(duì)不同的版本修改一些內(nèi)容,加之系統(tǒng)認(rèn)證需要的簽名和證書,因此,為了節(jié)省人力和物力,每次集成研發(fā)人員在工作之后需要通過自動(dòng)化構(gòu)建來完成打包工作,這個(gè)過程主要解決人工構(gòu)建的煩瑣性,節(jié)省因構(gòu)建浪費(fèi)的時(shí)間,簡(jiǎn)化開發(fā)以及測(cè)試所需求的多種定制化構(gòu)建。用Jenkins服務(wù)器作為平臺(tái)構(gòu)建測(cè)試包,能夠讓多步操作變成一鍵操作,還可以定時(shí)自動(dòng)構(gòu)建,群發(fā)實(shí)時(shí)郵件通知,提高工作效率。自動(dòng)構(gòu)建服務(wù)器中的每一個(gè)環(huán)節(jié)都是根據(jù)配置的信息和腳本代碼自動(dòng)運(yùn)行的,通過使用該服務(wù)器可以達(dá)到縮短構(gòu)建時(shí)間以及降低測(cè)試人員工作量的目的。
基于Jenkins平臺(tái)所構(gòu)建的WPS for iOS測(cè)試包,可以用來解決存在的主要問題有:①WPS項(xiàng)目版本多,有中文版、國(guó)際版、企業(yè)版和日文版等眾多版本。每個(gè)版本內(nèi)部都涉及大量的不同參數(shù)變更,已經(jīng)無法借助Xcode來維護(hù),必須借助腳本來修改這些參數(shù),防止人為修改出現(xiàn)眾多紕漏;②WPS項(xiàng)目配置文件多,整個(gè)WPS項(xiàng)目共包含幾百個(gè)配置文件,每個(gè)配置文件都需要修改簽名、證書和Version等信息,這么大的工作量也是WPS項(xiàng)目面臨的一個(gè)問題;③WPS項(xiàng)目打包批次多,不同的測(cè)試工作需要不同的測(cè)試包,且日常工作中還有很多分支項(xiàng)目,需要構(gòu)建每個(gè)項(xiàng)目分支的測(cè)試包,所以,頻繁地構(gòu)建多版本的WPS測(cè)試包也是該項(xiàng)目面臨的問題之一。綜上所述,傳統(tǒng)的手工構(gòu)建已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足WPS項(xiàng)目的需求,需要自動(dòng)構(gòu)建測(cè)試包來解決以上問題。
通過Jenkins可以將手動(dòng)Xcode構(gòu)建的操作轉(zhuǎn)化為自動(dòng)構(gòu)建,并用腳本代碼來實(shí)現(xiàn)修改配置文件,以此來構(gòu)建不同需求的ipa包,核心的設(shè)計(jì)如下:①?gòu)腟VN代碼庫(kù)中下載產(chǎn)品代碼,通過Jenkins服務(wù)器來配置WPS項(xiàng)目SVN源代碼庫(kù)的地址,最后輸入賬戶和密碼即可成功下載代碼。②根據(jù)需求通過腳本修改代碼中對(duì)應(yīng)的配置文件,這個(gè)過程是系統(tǒng)的核心,也是技術(shù)要求最高的部分,需要通過代碼詳細(xì)配置幾百份項(xiàng)目文件,成功驅(qū)動(dòng)Xcode自動(dòng)構(gòu)建。③構(gòu)建app測(cè)試包,通過Xcode完成項(xiàng)目文件配置,然后Xcode build負(fù)責(zé)將工程源文件編譯成.app的測(cè)試包;④將APP包壓縮為ipa包后從本地移到測(cè)試服務(wù)器上,使用Xcode build工具將代碼編譯后,將.app格式轉(zhuǎn)換為.ipa格式的測(cè)試包。此時(shí),可以通過Xcode自帶的命令Xcrun語句就可以將app包壓縮為ipa測(cè)試包,即Xcrun-sdk iphoneos Packageapplication-v $appfolder/Build/Products/${BUILD_CONFIG}-iphoneos/ $BUILD_ScHEME.app-o$WORKSPAcE/build/$BUILD_ ScHEME$SVN_REVISION$BUILD_MARK.ipa。上述-v后面是app文件及所在路徑,-o后面則是存放的ipa文件名及預(yù)存放的位置。⑤發(fā)送郵件至全體工作人員,借助安裝的郵件插件,通過配置接收和發(fā)送人員郵箱地址信息以及STMP服務(wù)器,編寫固定的郵件格式的代碼發(fā)送至全體工作人員。
基于Jenkins的WPS for iOS的自動(dòng)構(gòu)建服務(wù)器,以Jenkins服務(wù)器為平臺(tái),主要通過調(diào)用Shell腳本和OC程序驅(qū)動(dòng)Xcode自動(dòng)修改項(xiàng)目配置文件的眾多信息,最后自動(dòng)構(gòu)建服務(wù)器。該服務(wù)器提供的主要功能包括WPS for iOS多種測(cè)試安裝包的定制化構(gòu)建、一鍵構(gòu)建、定時(shí)構(gòu)建以及郵件通知,具體內(nèi)容如下。
定制化構(gòu)建就是根據(jù)具體的測(cè)試需求打出相應(yīng)的測(cè)試包。WPS項(xiàng)目大致包含中文版測(cè)試包、英文版測(cè)試包、中文高版本測(cè)試包以及帶有Today特性的測(cè)試包等。每一種測(cè)試包都有自己的特點(diǎn),所以,打不同版本的測(cè)試包就需要構(gòu)建不同的工程,通過修改各自對(duì)應(yīng)的配置參數(shù)以及腳本代碼,來實(shí)現(xiàn)定制化構(gòu)建。
一鍵構(gòu)建主要是指構(gòu)建時(shí)只需要點(diǎn)擊已建工程后的執(zhí)行構(gòu)建按鈕,就可以自動(dòng)構(gòu)建,整個(gè)過程通過工程中的配置參數(shù)和腳本自動(dòng)執(zhí)行,無需手動(dòng)操作。執(zhí)行一鍵構(gòu)建之后,在服務(wù)器主頁(yè)面會(huì)顯示相應(yīng)的工程執(zhí)行情況,工程執(zhí)行完之后,會(huì)有明顯的圖標(biāo)顯示是否執(zhí)行成功。除此之外,帶有顯示天氣狀況的圖標(biāo)表示構(gòu)建的穩(wěn)定程度,分?jǐn)?shù)越高則構(gòu)建越穩(wěn)定。穩(wěn)定程度從高到低依次為晴天(80+)、多云(60~79)、陰天(40~59)、陰雨(20~39)和閃電(0~19),分?jǐn)?shù)低于80表示構(gòu)建不穩(wěn)定。
定時(shí)構(gòu)建是指按照預(yù)先設(shè)定的時(shí)間自動(dòng)進(jìn)行構(gòu)建,這個(gè)功能實(shí)現(xiàn)起來較為方便,只需要在構(gòu)建觸發(fā)器模塊選擇Poll SCM選項(xiàng),并在其中輸入定時(shí)的命令即可。這個(gè)功能的優(yōu)點(diǎn)是可以利用晚上和周末空閑時(shí)間進(jìn)行構(gòu)建工作,這樣不僅提高了工作人員上班時(shí)的工作效率,還可以設(shè)定任意時(shí)間構(gòu)建,防止測(cè)試人員因工作忙而忘記構(gòu)建工作。定時(shí)構(gòu)建只需要在相應(yīng)的插件中寫入具體執(zhí)行構(gòu)建時(shí)間的語句,就可以做到定時(shí)構(gòu)建。
郵件是目前非常重要的溝通交流工具之一,所有與工作相關(guān)的信息都可以通過郵件的形式通知對(duì)方。在安裝了郵件插件之后,我們可以通過配置接收和發(fā)送郵件人員的郵箱地址等信息,在構(gòu)建完成后自動(dòng)將郵件發(fā)送到個(gè)人郵箱中,使人們的工作聯(lián)系更加緊密。
WPS是一款非常成熟的軟件,目前很多國(guó)家的人都在使用這款辦公軟件,因此WPS推出了眾多版本。使用Jenkins服務(wù)器部署自動(dòng)構(gòu)建,解決了人工配置Xcode進(jìn)行構(gòu)建的復(fù)雜性問題,縮短了構(gòu)建時(shí)間,減輕了工作的壓力。該服務(wù)器能夠讓多步操作變成一鍵操作,還可以定時(shí)自動(dòng)構(gòu)建,群發(fā)實(shí)時(shí)郵件通知構(gòu)建結(jié)果,使工作效率得到很大的提升。
[1]段清蛇,李筠.基于Jenkins的持續(xù)集成測(cè)試環(huán)境插件開發(fā)[J].信息技術(shù),2013(10).
[2]林新黨,穆加艷.基于Jenkins的持續(xù)集成系統(tǒng)研究[J].雷達(dá)與對(duì)抗,2014(01).
[3]朱紅,仇潤(rùn)鶴.基于Jenkins的移動(dòng)通信業(yè)務(wù)自動(dòng)化測(cè)試平臺(tái)的設(shè)計(jì)與測(cè)試[J].科技與創(chuàng)新,2016(07).
[4]趙杰昌,張良宇.基于Jenkins構(gòu)建持續(xù)集成系統(tǒng)[J].電腦編程技巧與維護(hù),2014(09).
[5]周瑩,歐中紅,李俊.基于Jenkins的持續(xù)集成自動(dòng)部署研究[J].計(jì)算機(jī)與數(shù)字工程,2016(02).
〔編輯:張思楠〕
TP311.52
A
10.15913/j.cnki.kjycx.2017.18.117
2095-6835(2017)18-0117-02
穆榮(1979—),女,陜西人,工程師,碩士研究生,主要從事網(wǎng)絡(luò)建設(shè)、網(wǎng)絡(luò)管理、服務(wù)器管理、教育信息化項(xiàng)目建設(shè)等工作。