色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>數值算法/人工智能>

實例分析無線持續交付平臺 MCD 的實踐應用

大小:0.7 MB 人氣: 2017-09-30 需要積分:0

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

  集成平臺

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

  1.0 階段

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

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

  2.0 階段

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

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

  編譯容易失敗,任何一個 Check-in 導致的編譯失敗,就會致使系統不能正常出包。

  系統之間采用輪詢模式,Job 任務擴展性差。

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

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

  引入消息機制,提高系統吞吐量;

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

  消息機制的改造:

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

  實例分析無線持續交付平臺 MCD 的實踐應用

  圖 1 Bundle 打包工程拆分:

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

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

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發表評論

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

      發表評論,獲取積分! 請遵守相關規定!

      ?
      主站蜘蛛池模板: 嗯好舒服嗯好大好猛好爽| 亚洲一区在线观看视频| 极品少妇粉嫩小泬啪啪AV| 99RE6国产精品视频播放| 婷婷综合亚洲爱久久| 看免费人成va视频全| 国产精品青青青高清在线密亚| 8X拨牐拨牐X8免费视频8| 亚洲国产欧美日韩在线一区| 轻点灬大ji巴太粗太双性高h| 久草网国产自偷拍| 国产精品亚洲视频在线观看| CHINA篮球体育飞机2022网站| 一本到道免费线观看| 甜性涩爱免费下载| 强壮的公次次弄得我高潮韩国电影 | 亚洲欧美一区二区成人片| 秋霞电影伦网理最新在线看片| 精品精品国产yyy5857香蕉| 国产精品久久久久久影院| 白丝萝莉喷水| adc网址在线观看| 在线亚洲色拍偷拍在线视频| 亚洲二区电影| 无套日出白浆在线播放| 日本在线高清不卡免费播放| 男人边吃奶边挵进去呻吟漫画| 久久草福利自拍视频在线观看| 国内精品久久久久久西瓜色吧| 国产精品av| 国产激情文学| 国产精品999| 国产精品一区二区激情| 国产产乱码一二三区别免费| 拔萝卜在线高清观看视频| www.av天堂网.com| xiao776唯美清纯| 成年AV动漫| 福利视频久久| 高清无码中文字幕影片| 攻把受做哭边走边肉楼梯PLAY|