国产chinesehdxxxx老太婆,办公室玩弄爆乳女秘hd,扒开腿狂躁女人爽出白浆 ,丁香婷婷激情俺也去俺来也,ww国产内射精品后入国产

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>數(shù)值算法/人工智能>

實例分析無線持續(xù)交付平臺 MCD 的實踐應(yīng)用

大?。?/span>0.7 MB 人氣: 2017-09-30 需要積分:0

  目前攜程大部分訂單已來自移動端,App 幾乎承載了整個集團的所有業(yè)務(wù)形態(tài)。在內(nèi)部研發(fā)中,攜程的 App 已經(jīng)發(fā)展成為擁有 90+ Native Bundle、100+ Hybrid Bundle、30+ React Native Bundle,幾百名研發(fā)人員,每個版本(1 個月)交付 4000+個 App 包,Hybrid/React Native/HotFix/Bundle 發(fā)布次數(shù) 500+。如果沒有一個有效的無線持續(xù)交付平臺,很難實現(xiàn)大版本的集成發(fā)布在 3 天內(nèi)完成。而對比市場上開源的無線持續(xù)集成工具 Fastlane、TestFlight、Jenkins 都存在各種定制化需求的問題。因此我們從零開始,逐步打造適合攜程研發(fā)流程的無線交付平臺,系統(tǒng)化地解決研發(fā)支撐痛點。下面將從集成、測試、發(fā)布、運營四個子平臺來展開,具體分享我們是如何一步步打造無線持續(xù)交付平臺的。

  集成平臺

  從最初到現(xiàn)在,攜程無線持續(xù)交付模型經(jīng)歷了從 1.0 到 2.0 的迭代演進。在 1.0 之前,App 集成和發(fā)布還主要依靠人工操作 Jenkins,需要由特定的打包人員負(fù)責(zé)打包,再將包通過 IM/郵件等方式傳遞給其他測試人員,測試結(jié)果需要專人手工回收,以把控 App 質(zhì)量。此時最大的問題就是 App 管理混亂,人工介入過多,每次發(fā)布都需要花費很長的時間。

  1.0 階段

  在 1.0 階段,我們引入 MCD(Mobile Continues Delivery)平臺思路,將打包人員的工作交給平臺來完成,提高了發(fā)布工作效率。這時不需要專職人員負(fù)責(zé)出包,平臺會定時自動打包,測試人員可以到平臺上自由取包(通過下載鏈接或掃描二維碼的方式)進行測試。與此同時,測試人員也可以在平臺上進行單獨的打包和測試。測試結(jié)果會統(tǒng)一反饋到平臺上來,協(xié)調(diào)人員在平臺根據(jù)各家的反饋結(jié)果決定需要重新出包還是繼續(xù)下一步發(fā)布操作。

  在這個階段,App 的打包還完全依賴于源代碼進行,由平臺生成打包參數(shù)(主要包含 App 運行環(huán)境、與 iOS 簽名相關(guān)的參數(shù)以及代碼倉庫相關(guān)的參數(shù))提交給后臺的打包系統(tǒng)。它會根據(jù)倉庫地址和 commit ID 從代碼倉庫中拉取全量代碼,然后打包系統(tǒng)再調(diào)用代碼中預(yù)先準(zhǔn)備好的 Build 腳本構(gòu)建 App 產(chǎn)物,構(gòu)建完成后將結(jié)果保存至臨時的文件服務(wù)中,最后由平臺的回收進程將構(gòu)建結(jié)果回收并處理之后放在云存儲上供用戶下載使用。

  2.0 階段

  1.0 階段雖然已經(jīng)基本實現(xiàn)了集成打包的自動化,但是還存在以下幾點不足:

  源碼打包方式效率低下,每次都要從代碼倉庫中下載全量代碼,再通過源代碼生成 App 產(chǎn)物。這樣做使得每次 Build 時間都很長,而打包次數(shù)的增加會導(dǎo)致某些打包任務(wù)積壓,系統(tǒng)不能及時出包。

  編譯容易失敗,任何一個 Check-in 導(dǎo)致的編譯失敗,就會致使系統(tǒng)不能正常出包。

  系統(tǒng)之間采用輪詢模式,Job 任務(wù)擴展性差。

  MCD 系統(tǒng)發(fā)起 Build 請求之后會有另一個定時的 Job 任務(wù)去輪詢 Build Server 查看 Build 結(jié)果。在初期階段還能滿足業(yè)務(wù)需求,但是后來由于打包數(shù)量的增加以及打包頻率的提高,系統(tǒng)的處理效率變得越來越低。一方面打包資源不夠(Android 打包使用 Linux 虛擬機,iOS 打包使用 Mac),另一方面輪詢 Job 的處理效率達(dá)到了瓶頸。打包機器采用 Jenkins 方式進行管理,因此很容易進行橫向擴展,但是 Job 卻很難擴容。

  針對以上問題,我們對平臺進行了升級改造,主要為:

  引入消息機制,提高系統(tǒng)吞吐量;

  將工程進行拆分,按照 Bundle 的方式進行打包。

  消息機制的改造:

  首先基本打包架構(gòu)和流程保持不變,在 MCD 系統(tǒng)和 Build Server 之間增加消息系統(tǒng),MCD 發(fā)起 Build 之后不再輪詢 Build Server,而是消費由 Build Server 產(chǎn)生的 Build 完成消息,如圖 1 所示。使用這樣的生產(chǎn)消費模型 MCD 可以輕易地進行水平擴展,系統(tǒng)執(zhí)行效率得到極大改善。

  實例分析無線持續(xù)交付平臺 MCD 的實踐應(yīng)用

  圖 1 Bundle 打包工程拆分:

  App 工程拆分成多個不同的 Bundle 模塊,Bundle 之間存在依賴關(guān)系。在這個情況下 App 的編譯和打包也可以按照 Bundle 的方式進行組織。在開發(fā)階段,開發(fā)人員提交完代碼之后就能直接將自己負(fù)責(zé)的 Bundle 編譯成可執(zhí)行文件,測試可以自由選擇 Bundle 進行打包。此時打包工作只需將多個 Bundle 文件組裝在一起就行,極大地加快了打包速度。通過測試的 Bundle 會被發(fā)布到指定地點,在 App 集成階段只需把所有發(fā)布的 Bundle 組裝成最終 App 供大家測試即可。

  在開發(fā)自測階段,開發(fā)人員提交完代碼后在 MCD 平臺上 Build 出所開發(fā)的 Bundle(標(biāo)記為 L,表示 Latest)。相關(guān)測試人員(或開發(fā)人員自己)可以打測試包,測試包會使用所有 Bunde 的 L 版本進行構(gòu)建。構(gòu)建完成之后獲取測試包進行功能測試,測試通過后就可以將該 Bundle 進行發(fā)布操作,即標(biāo)記為 RC 版本(表示 Release Candidate)。

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?