亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Jenkins 的可持續(xù)集成自動(dòng)化構(gòu)建系統(tǒng)研究

        2022-11-07 02:16:34劉聰聰任靜媛
        汽車電器 2022年9期
        關(guān)鍵詞:設(shè)置系統(tǒng)

        劉聰聰,杜 彬,任靜媛

        (陜西重型汽車有限公司汽車工程研究院,陜西 西安 710200)

        在整個(gè)汽車行業(yè)的研發(fā)過程中,軟件正越來越多地取代硬件,以降低系統(tǒng)的成本,獲得更大的靈活性。這就意味著軟件在整個(gè)行業(yè)中的比重將越來越大,軟件代碼的品質(zhì)已經(jīng)成為整個(gè)產(chǎn)品品質(zhì)的重要衡量參數(shù)。那么在汽車行業(yè)軟件開發(fā)過程中,開發(fā)工程師與測(cè)試工程師需要根據(jù)需求不斷對(duì)軟件代碼迭代更新,相應(yīng)的軟件就需要進(jìn)行全功能測(cè)試,由此產(chǎn)生了大量的重復(fù)工作,這樣不僅效率低,而且會(huì)出現(xiàn)不可避免的人工操作失誤。因此,有必要引入一個(gè)自動(dòng)化可持續(xù)集成構(gòu)建的系統(tǒng)來解決這些問題。該系統(tǒng)只需要工程師將相應(yīng)的代碼上傳到指定位置,平臺(tái)會(huì)根據(jù)配置自動(dòng)調(diào)度工具自動(dòng)化測(cè)試,保證迭代變更后的軟件代碼在最短的時(shí)間內(nèi)發(fā)現(xiàn)問題并解決,提升了工作效率與軟件代碼品質(zhì),同時(shí)減少了后期維護(hù)成本。本文以汽車行業(yè)某軟件開發(fā)過程為例,闡述基于Jenkins的可持續(xù)集成自動(dòng)化構(gòu)建平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)。

        1 可持續(xù)集成自動(dòng)化構(gòu)建系統(tǒng)概述

        本文所述可持續(xù)集成自動(dòng)化構(gòu)建系統(tǒng)根據(jù)V流程,將現(xiàn)有工具基于Jenkins進(jìn)行資源整合,從檢出代碼、編譯構(gòu)建、運(yùn)行測(cè)試、結(jié)果記錄、郵件發(fā)送等都是自動(dòng)完成的,不用人工操作,實(shí)現(xiàn)了軟件閉環(huán)測(cè)試過程?;贘enkins平臺(tái)搭建的可持續(xù)集成自動(dòng)化構(gòu)建系統(tǒng)的工作流程如圖1所示。

        圖1 可持續(xù)集成自動(dòng)化構(gòu)建系統(tǒng)的工作流程圖

        1)開發(fā)工程師根據(jù)需求變更代碼并提交代碼于SVN;測(cè)試工程師根據(jù)需求編寫測(cè)試用例并提交于SVN;平臺(tái)用戶創(chuàng)建項(xiàng)目,配置平臺(tái)信息并上傳SVN。

        2)根據(jù)用戶新建項(xiàng)目調(diào)整創(chuàng)建Jenkins任務(wù)設(shè)置。

        3)用戶指定并創(chuàng)建Jenkins構(gòu)建過程。

        4)SVN指定路徑變更/定時(shí)觸發(fā)Jenkins構(gòu)建。

        5)自動(dòng)調(diào)用工具鏈執(zhí)行相應(yīng)的測(cè)試過程。

        6)測(cè)試結(jié)果郵件發(fā)送給相關(guān)人員。

        整個(gè)過程執(zhí)行一遍,工程師會(huì)接收到反饋郵件,并將發(fā)現(xiàn)的問題及時(shí)修改,若沒問題,則代碼保存在SVN供用戶使用。之后會(huì)按照變更觸發(fā)和定時(shí)觸發(fā)進(jìn)行多次回歸測(cè)試,直到達(dá)到定義的相關(guān)標(biāo)準(zhǔn)為止。

        Jenkins、SVN和執(zhí)行工具可以部署在專門的服務(wù)器上,這樣工程師在工作時(shí)不會(huì)受平臺(tái)運(yùn)行的影響。同時(shí),平臺(tái)執(zhí)行時(shí)間可以設(shè)置,可以選擇非工作時(shí)間執(zhí)行,充分有效利用時(shí)間,提高效率。相比于傳統(tǒng)的人工手動(dòng)測(cè)試來說,這種模式下工程師只需要維護(hù)SVN中的代碼版本的迭代和測(cè)試用例的更新,不需要在版本迭代時(shí)人工處理各個(gè)節(jié)點(diǎn)的代碼更新、打包和運(yùn)行操作,整個(gè)過程都交給Jenkins統(tǒng)一控制,節(jié)約人力成本,開發(fā)人員能夠更好地聚焦在軟件邏輯以及測(cè)試用例的開發(fā)。

        2 可持續(xù)集成自動(dòng)化構(gòu)建系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

        2.1 創(chuàng)建節(jié)點(diǎn)并配置節(jié)點(diǎn)

        對(duì)于規(guī)模較大的項(xiàng)目,可能需要多次變更與維護(hù),代碼提交比較頻繁,測(cè)試項(xiàng)目較多,此時(shí)采用單節(jié)點(diǎn)測(cè)試壓力較大,從而采用多節(jié)點(diǎn)部署,相當(dāng)于增加Leader機(jī)制,即讓master來擔(dān)任Leader的角色,負(fù)責(zé)任務(wù)的調(diào)度與狀態(tài)收集、節(jié)點(diǎn)的管理等,把具體的構(gòu)建任務(wù)交由各節(jié)點(diǎn)完成。

        如圖2所示,master是主節(jié)點(diǎn),負(fù)責(zé)整體的調(diào)度部署;Test1_A、Test_B、Test_C、Test_D為工具鏈節(jié)點(diǎn),該節(jié)點(diǎn)輪詢構(gòu)建,不斷進(jìn)行回歸測(cè)試。

        圖2 多節(jié)點(diǎn)列表

        節(jié)點(diǎn)的配置如圖3所示,以編譯節(jié)點(diǎn)為例,其他節(jié)點(diǎn)類似?!癠sage”設(shè)置為“User this node as possible”,即盡可能使用此節(jié)點(diǎn),“Launch method”設(shè)置為“Keep this agent online as much as possible”,即通過連接到主節(jié)點(diǎn)啟動(dòng)代理。

        圖3 配置節(jié)點(diǎn)

        2.2 創(chuàng)建任務(wù)并配置任務(wù)

        創(chuàng)建任務(wù),以編譯一個(gè)子任務(wù)為例,如圖4所示,通過設(shè)置任務(wù)的屬性Restrict where this project can be run將任務(wù)與對(duì)應(yīng)節(jié)點(diǎn)匹配,通過配置Source Code Management項(xiàng)來獲取最新的源代碼,如源代碼使用SVN管理,這里選擇“Subversion Modules”,如圖5所示,在“Repository URL”錄入SVN倉(cāng)庫地址。

        圖4 設(shè)置任務(wù)的屬性

        圖5 配置源代碼獲取方式

        通過配置“Build Triggers”項(xiàng),實(shí)現(xiàn)如何進(jìn)行觸發(fā)構(gòu)建。一般Jenkins的自動(dòng)構(gòu)建選擇以下兩種方式進(jìn)行觸發(fā)。一是采用Build periodically周期性構(gòu)建,它使用cron語法,包含5個(gè)字段(MINUTE HOUR DOM MONTH DOW),H 5 * * *表示每天早上5點(diǎn)進(jìn)行自動(dòng)構(gòu)建。二是對(duì)于像SVN要持續(xù)進(jìn)行檢測(cè)代碼庫是否存在更新及是否需要執(zhí)行一次變更構(gòu)建,則選擇Poll SCM選項(xiàng),例如將其設(shè)置為H */2 * * *,即每隔2h進(jìn)行一次源碼變更檢查。如圖6、圖7所示。

        圖6 Build periodically設(shè)置

        圖7 Poll SCM設(shè)置

        Jenkins提供了多種方式可進(jìn)行Build配置,其中,可調(diào)用外部命令和腳本。本例中,選擇執(zhí)行windows批處理命令,根據(jù)項(xiàng)目要求編寫相關(guān)命令,如圖8所示,通過調(diào)用Jar包實(shí)現(xiàn)代碼的預(yù)處理,再進(jìn)行文件的拷貝與執(zhí)行,以及實(shí)現(xiàn)文件的打包與存儲(chǔ)。

        圖8 批處理命令舉例

        在完成Build配置后,選擇“Post-build Actions”配置其他的選項(xiàng),比如該子任務(wù)執(zhí)行結(jié)果需要發(fā)布存儲(chǔ)的SVN倉(cāng)庫配置和郵件反饋設(shè)置。郵件設(shè)置如圖9所示,添加收件人郵箱即可,當(dāng)構(gòu)建失敗、構(gòu)建過程不穩(wěn)定或恢復(fù)穩(wěn)定時(shí),將發(fā)送電子郵件。也可以添加指定的郵箱插件,例如網(wǎng)易郵箱等,指定發(fā)送/抄送用戶、制式郵件模板等,使得郵件標(biāo)準(zhǔn)易讀。

        圖9 郵件配置

        至此便實(shí)現(xiàn)了Jenkins項(xiàng)目的配置。其中SVN、企業(yè)郵箱等均是安裝的工具插件,成百上千的插件可以安裝在Jenkins主機(jī)上集成不同的構(gòu)建工具來適應(yīng)用戶的需求,增強(qiáng)Jenkins功能。

        2.3 自動(dòng)構(gòu)建系統(tǒng)平臺(tái)化

        章節(jié)2.1和2.2描述了搭建自動(dòng)化構(gòu)建系統(tǒng)的部分操作及配置,對(duì)于復(fù)雜的項(xiàng)目配置項(xiàng)更多,擁有可以與Jenkins相關(guān)聯(lián)的上位機(jī)能避免配置中的繁瑣過程,只需在平臺(tái)界面進(jìn)行配置并提交于Jenkins即可,便于使用和維護(hù)。該上位機(jī)可使用JAVA語言開發(fā),平臺(tái)接口根據(jù)需求進(jìn)行擴(kuò)展。在程序主體框架搭建好的情況下,每次集成工具通過創(chuàng)建插件項(xiàng)目、添加主框架、添加擴(kuò)展點(diǎn)、根據(jù)擴(kuò)展點(diǎn)接口創(chuàng)建對(duì)應(yīng)的類進(jìn)行實(shí)現(xiàn)。實(shí)現(xiàn)方式與編程習(xí)慣有關(guān),通常需要3個(gè)類,一是負(fù)責(zé)實(shí)現(xiàn)測(cè)試工具的集成頁面,二是實(shí)現(xiàn)頁面數(shù)據(jù)的保存和加載,三是負(fù)責(zé)實(shí)現(xiàn)測(cè)試工具的集成調(diào)用。

        3 測(cè)試驗(yàn)證

        本文的實(shí)施環(huán)境由搭建Jenkins主節(jié)點(diǎn)和SVN的服務(wù)器1臺(tái)和2臺(tái)分別運(yùn)行工具和開發(fā)測(cè)試的服務(wù)器組成。配置平臺(tái)周期構(gòu)建時(shí)間為早上5點(diǎn),定時(shí)觸發(fā)構(gòu)建根據(jù)Jenkins監(jiān)控SVN倉(cāng)庫的更新情況而定,每2min檢測(cè)一次,如有變化則對(duì)最新的代碼進(jìn)行自動(dòng)化構(gòu)建。

        圖10為編譯構(gòu)建完成的截圖,可以看出編譯任務(wù)PrjTest_Compiler_OnTime每天上午5∶12進(jìn)行構(gòu)建;對(duì)于每天非周期構(gòu)建時(shí)間,編譯任務(wù)PrjTest_Compiler_Update 會(huì)根據(jù)Jenkins檢測(cè)SVN的情況作出響應(yīng),如圖10、11所示,3月19日除了5∶12周期性執(zhí)行過,還在下午12∶3進(jìn)行了執(zhí)行,這樣既保證了構(gòu)建的完整性,又避免了不停回歸測(cè)試引起的資源浪費(fèi)。測(cè)試結(jié)果以郵件的形式進(jìn)行反饋,如圖12所示。

        圖10 周期編譯構(gòu)建截圖

        圖11 事件觸發(fā)編譯構(gòu)建截圖

        圖12 測(cè)試結(jié)果郵件反饋截圖

        以實(shí)際某項(xiàng)目為例,分別采用手動(dòng)測(cè)試和使用可持續(xù)集成平臺(tái)測(cè)試,表1列舉出該項(xiàng)目執(zhí)行一遍兩種方法的相關(guān)內(nèi)容對(duì)比。

        由表1可知,該項(xiàng)目4個(gè)測(cè)試項(xiàng)執(zhí)行一遍至少需要3h,失誤率在10%,自動(dòng)化測(cè)試耗時(shí)只花費(fèi)在平臺(tái)的配置上,執(zhí)行時(shí)間在非工作時(shí)間且失誤率低。通過對(duì)比可知自動(dòng)化測(cè)試所耗時(shí)間僅為人工測(cè)試的1/6。在多輪測(cè)試時(shí),配置好的平臺(tái)不需要額外耗時(shí),平臺(tái)會(huì)按照配置的時(shí)間執(zhí)行即可,同一項(xiàng)目執(zhí)行周期越長(zhǎng),越能體現(xiàn)自動(dòng)化構(gòu)建的優(yōu)勢(shì)。由此可知,自動(dòng)化構(gòu)建系統(tǒng)不僅能降低人工帶來的失誤率,且大大提高了工作效率。

        表1 某項(xiàng)目手動(dòng)測(cè)試與自動(dòng)化測(cè)試效果對(duì)比

        4 總結(jié)

        本文基于Jenkins設(shè)計(jì)實(shí)現(xiàn)了可持續(xù)集成自動(dòng)化構(gòu)建系統(tǒng),并將其應(yīng)用于實(shí)際項(xiàng)目中,與傳統(tǒng)方法對(duì)比可知,可持續(xù)集成平臺(tái)通過自動(dòng)化構(gòu)建、自動(dòng)化測(cè)試以及自動(dòng)化部署與反饋的方式實(shí)現(xiàn)軟件的閉環(huán)測(cè)試,以插件式的方式集成工具使得測(cè)試過程更完整,再搭配變更/定時(shí)的觸發(fā)方式輪詢構(gòu)建保證了開發(fā)系統(tǒng)中的問題能迅速被發(fā)現(xiàn)和修復(fù),使得開發(fā)過程始終保持在一個(gè)穩(wěn)定健康的狀態(tài)。這樣,既滿足了敏捷開發(fā)的需要,又有效提高了開發(fā)效率。

        猜你喜歡
        設(shè)置系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        中隊(duì)崗位該如何設(shè)置
        WJ-700無人機(jī)系統(tǒng)
        ZC系列無人機(jī)遙感系統(tǒng)
        基于PowerPC+FPGA顯示系統(tǒng)
        半沸制皂系統(tǒng)(下)
        7招教你手動(dòng)設(shè)置參數(shù)
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        本刊欄目設(shè)置說明
        中俄臨床醫(yī)學(xué)專業(yè)課程設(shè)置的比較與思考
        日本a爱视频二区三区| 韩国19禁主播深夜福利视频| 国产精品成人午夜久久| 亚洲av有码精品天堂| 日韩人妻中文字幕专区| 中文无字幕一本码专区| 国产一区亚洲二区三区| 51国偷自产一区二区三区| 日韩国产一区| 久久精品国产亚洲av高清蜜臀| 亚洲天堂精品一区入口| 少妇激情一区二区三区视频| 91麻豆国产香蕉久久精品| 国产目拍亚洲精品区一区| 国产午夜视频一区二区三区| 午夜福利啪啪片| 91网站在线看| 日韩激情av不卡在线| 99国产精品久久久久久久成人热 | 在线观看免费不卡网站| 人妻精品久久久久中文字幕69| 国产无套护士在线观看| 校花高潮一区日韩| 国产极品大奶在线视频| 99国产精品自在自在久久| 亚洲天堂第一区| 亚洲av精品一区二区| 97人妻人人揉人人躁九色| 娜娜麻豆国产电影| 精品乱码卡1卡2卡3免费开放| 亚洲成人av一区二区麻豆蜜桃| 精品一级一片内射播放| 天天躁夜夜躁天干天干2020| 亚洲日本va午夜在线电影| 毛片在线啊啊| 蜜桃国产精品视频网站| 国产成人av综合色| 猫咪免费人成网站在线观看| 精品日韩欧美一区二区三区在线播放| 国产黄久色一区2区三区| 欧美乱人伦人妻中文字幕|