• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2022-11-07 02:16:34劉聰聰任靜媛
      汽車電器 2022年9期
      關鍵詞:郵件代碼設置

      劉聰聰,杜 彬,任靜媛

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

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

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

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

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

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

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

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

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

      5)自動調(diào)用工具鏈執(zhí)行相應的測試過程。

      6)測試結果郵件發(fā)送給相關人員。

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

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

      2 可持續(xù)集成自動化構建系統(tǒng)設計與實現(xiàn)

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

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

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

      圖2 多節(jié)點列表

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

      圖3 配置節(jié)點

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

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

      圖4 設置任務的屬性

      圖5 配置源代碼獲取方式

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

      圖6 Build periodically設置

      圖7 Poll SCM設置

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

      圖8 批處理命令舉例

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

      圖9 郵件配置

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

      2.3 自動構建系統(tǒng)平臺化

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

      3 測試驗證

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

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

      圖10 周期編譯構建截圖

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

      圖12 測試結果郵件反饋截圖

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

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

      表1 某項目手動測試與自動化測試效果對比

      4 總結

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

      猜你喜歡
      郵件代碼設置
      基于James的院內(nèi)郵件管理系統(tǒng)的實現(xiàn)
      中隊崗位該如何設置
      少先隊活動(2021年4期)2021-07-23 01:46:22
      創(chuàng)世代碼
      動漫星空(2018年11期)2018-10-26 02:24:02
      創(chuàng)世代碼
      動漫星空(2018年2期)2018-10-26 02:11:00
      創(chuàng)世代碼
      動漫星空(2018年9期)2018-10-26 01:16:48
      創(chuàng)世代碼
      動漫星空(2018年5期)2018-10-26 01:15:02
      一封郵件引發(fā)的梅賽德斯反彈
      車迷(2018年12期)2018-07-26 00:42:32
      本刊欄目設置說明
      中俄臨床醫(yī)學專業(yè)課程設置的比較與思考
      地鐵出入段線轉換軌設置
      靖远县| 韩城市| 仁寿县| 大同县| 桐庐县| 宜兴市| 龙游县| 分宜县| 英山县| 沈丘县| 乐都县| 收藏| 观塘区| 山阴县| 邢台县| 藁城市| 司法| 安多县| 会理县| 资阳市| 四会市| 尚志市| 隆回县| 禄丰县| 罗定市| 江城| 南江县| 北安市| 灵丘县| 四会市| 太白县| 灵山县| 监利县| 临朐县| 乳源| 光山县| 濮阳县| 诸暨市| 泽普县| 松溪县| 南江县|