0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

唯快不破!華為云發(fā)布分布式編譯構建系統(tǒng)CodeArts Build

科技怪授 ? 來源:科技怪授 ? 作者:科技怪授 ? 2023-03-24 15:20 ? 次閱讀

在數字化時代,軟件編譯構建效率關系著企業(yè)能否快速響應客戶需求,提供更好的客戶體驗。

以汽車行業(yè)為例,隨著汽車數智升級的加速,主機廠商往往通過OTA模式快速更新軟件,以帶給客戶更佳的用車體驗。

智能化、高體驗的車載軟件已成為汽車的核心競爭力,然而車載軟件通常包含上億行代碼,一次車載軟件的編譯集成需要數小時,如何提升車載軟件的編譯構建效率已成為汽車軟件競爭力構筑的關鍵路徑。

2月14日,華為云發(fā)布分布式編譯構建系統(tǒng)CodeArts Build,旨在撐企業(yè)實現高效的軟件開發(fā),縮短產品上市周期,幫助企業(yè)的軟件產品快速形成關鍵競爭力。

如何提升軟件編譯構建效率?

編譯構建效率的提升是個系統(tǒng)工程,需要構建工程、構建工具、構建環(huán)境等各個方面協(xié)同優(yōu)化。通過自動化的構建過程、高效的構建機制、最大化共享的基礎設施,才可實現端到端的編譯構建效率提升。

第一、將編譯構建的過程自動化

軟件是將源代碼及其所依賴的二進制文件等,通過編譯、鏈接、打包等過程形成的二進制文件。通過持續(xù)集成實現編譯構建的自動化,已在業(yè)界普遍推行。軟件生成過程的自動化能夠減少人工干預和重復操作,實現軟件的快速驗證,更快地發(fā)現錯誤并修復。

“持續(xù)集成是一種軟件開發(fā)實踐,團隊成員頻繁地集成他們的工作,通常每人每天至少集成一次,每次集成通過自動化構建(含測試)能夠更高效地查找錯誤,使團隊更加迅速地開發(fā)軟件。

軟件開發(fā)大師Martin Fowler”

第二、將自動化的每個環(huán)節(jié)提速

保持快速的構建,每減少一分鐘的構建時間,就為每個開發(fā)人員在每提交時節(jié)省一分鐘。

編譯構建通常包含如下過程:

第一步,將代碼下載到構建服務器;

第二步,依賴二進制下載到構建服務器;

第三步,編譯、鏈接、打包;

第四步,歸檔軟件包或鏡像。

每個環(huán)節(jié)都可能成為構建效率的瓶頸,從而導致軟件產品開發(fā)迭代效率低、發(fā)布周期長。如車載軟件往往基于AOSP(Android Open Source Project,Android開放源代碼項目)開發(fā),代碼倉多達數百甚至上千個代碼量達千萬行甚至億行規(guī)模,一次軟件構建長達數小時。

提升代碼下載效率和編譯效率,是提升軟件開發(fā)迭代效率、縮短軟件發(fā)布周期的關鍵。

第三、最大化地共享基礎設施

在企業(yè)內部的開發(fā)場景中,各個開發(fā)團隊往往獨自搭建基礎設施,每個團隊或個人獨占自建的構建資源,導致有的團隊構建資源冗余而浪費,有的團隊構建資源不足而開發(fā)效率低下。

通過云化將基礎設施的算力充分共享,實現統(tǒng)一調度,是解決上述問題的最有效方式,不但能更加高效地構建基礎設施,也可大幅節(jié)省資源。

由此可見,云化是編譯構建系統(tǒng)的不二選擇。

華為云CodeArts Build讓編譯構建極速“狂飆”

在華為的敏捷軟件開發(fā)歷程中,軟件的編譯構建一直被重點關注。

從最初始的單機自動化構建、到多機自動化構建、再到云化的分布式構建,如今,軟件的高效編譯構建已很好地支撐了華為無線、數通、車、計算、存儲、終端等各個業(yè)務的高速發(fā)展,實現更高效的軟件發(fā)布。

華為云CodeArts Build當前已支撐華為6萬研發(fā)人員的軟件高效集成,每日構建任務量達77萬次,集中彈性調度24.8萬臺構建服務器。通過代碼按需下載、云化、分布式、精準增量、彈性調度等關鍵技術,端到端加速軟件集成過程,讓開發(fā)人員編譯結果分鐘級反饋、版本包30分鐘集成、億級代碼全量構建1小時完成。

具體來看,華為云CodeArts Build的極速構建能力體現在如下六個方面:

環(huán)境搭建快:開箱即用,環(huán)境無感知,快速搭建持續(xù)集成系統(tǒng)

華為云CodeArts Build內置130多種構建環(huán)境、30多個模板、20多個插件,用戶開箱即用。同時,CodeArts Build支持多平臺、多系統(tǒng)構建,包括x86、ARM等計算架構,以及Linux、Windows、MacOS等操作系統(tǒng)。

通過內置上述的跨平臺環(huán)境,可消除人工搭建編譯服務器、配置持續(xù)集成軟件等環(huán)節(jié),幫助用戶快速完成持續(xù)集成系統(tǒng)的搭建。

代碼下載快:基于文件內容指紋的代碼緩存技術,讓代碼極速下載

隨著產品的規(guī)模增加,產品的代碼量也會急劇膨脹,構建過程中的代碼下載時間也變得越來越長。

以AOSP項目13版本為例,代碼量為140G,千兆帶寬全量下載一次代碼需要20分鐘左右,代碼下載時長成為影響構建效率的關鍵瓶頸之一。如果將代碼固定到構建執(zhí)行機上,每次構建增量下載,又可能會存在代碼不一致或代碼在構建過程中被污染的問題。

華為云CodeArts Build提供代碼下載加速技術,通過對源碼文件樹進行特征識別碼計算,基于構建專用的分布式文件存儲系統(tǒng),對源碼進行權限加密和去重存儲,實現文件一次緩存多次復用,大大減少了從代碼倉下載文件的次數。

同時,通過VPC內的專用網絡通道,高效地從緩存復用代碼,從而實現構建時代碼的高效下載。

編譯速度快:大規(guī)模分布式、精準增量編譯,突破單機物理限制,構建效率成倍提升

大型嵌入式項目通常包含數量龐大的模塊或組件,如車載軟件、基站、智能終端、存儲產品等,且C/C++代碼量巨大,上千萬行甚至上億行,編譯執(zhí)行時間長是阻礙產品迭代開發(fā)效率提升的關鍵因素。傳統(tǒng)的軟件開發(fā)構建,一般在單機上編譯,受限于編譯服務器的性能,一次復雜軟件的全量構建時間往往長達幾小時甚至數十小時。

華為云CodeArts Build提供分布式編譯、精準增量等技術,突破單臺機器的性能瓶頸,通過云的大規(guī)模彈性資源實現C/C++語言的編譯加速。同時通過共享的分布式緩存和精準的依賴識別,實現編譯命令的按需分發(fā),在節(jié)約成本的基礎上成倍提升構建效率。

組件集成快:提供BuildFlow編排模式,多任務并行構建,實現多組件的高效集成

大型軟件項目往往涉及到多個團隊協(xié)作開發(fā),同時軟件構建時也可能涉及多種計算架構和多種操作系統(tǒng)。

如華為5G基站產品,一次軟件構建,需要集成來自4條產品線、20多個團隊提供的組件,并且需要同時在x86和ARM計算架構上集成出包。各個組件間基于軟件架構的設計,形成有向無環(huán)圖,需要一次完成軟件包的集成。

針對這一涉及到多個團隊協(xié)作、多種計算架構、多種操作系統(tǒng)和構建工程存在依賴的復雜構建場景,華為云CodeArts Build提供了BuildFlow編排模式,開發(fā)或集成工程師基于多組件依賴關系的按需編排,可讓構建任務按照任務依賴關系以有向無環(huán)圖的方式構建。

通過高效、靈活的BuildFlow構建模式,不僅可以滿足復雜的構建要求,還可以將現有的構建任務以模塊化的方式進行拆分,通過多任務并行構建,實現軟件包的快速構建集成。

poYBAGQdT0uALfiWAAFjwtn_fQM455.png

多代碼倉下載快:提供基于Repo工具的多倉下載模式,實現多代碼倉高效集成

智能終端、車載軟件、物聯網設備等嵌入式軟件領域,通?;?a target="_blank">鴻蒙、AOSP等系統(tǒng)開發(fā),一次構建需要同時集成數百甚至上千個代碼倉,多代碼倉的集成下載效率至關重要。

華為云CodeArts Build集成Repo下載工具,用戶只需進行簡單配置即可實現多個代碼倉的聯動集成下載。同時也可集成代碼緩存技術,實現多個代碼倉的聯動高效下載。

資源利用效率高:支持企業(yè)范圍內的資源共享,高效利用構建資源

華為云CodeArts Build通過統(tǒng)一彈性調度華為無線、數通、光、車、計算、存儲等各產品線的構建資源,實現企業(yè)級數十萬臺構建資源的共享。相比各產品、項目團隊自建、獨占構建資源,可節(jié)省70%構建資源。

同時,對于不同產業(yè)的不同產品研發(fā)場景,提供對應的編譯構建算力,用極低成本實現高效的研發(fā)作業(yè)。通過實踐外溢,可幫助企業(yè)實現構建資源的高效利用。

poYBAGQdT02AajiYAAFdm_7JdUs528.png

華為云CodeArts Build已支撐華為公司云計算、網絡、終端、芯片、汽車等各個業(yè)務的高速發(fā)展。

例如,CodeArtsBuild通過極致的構建加速能力,幫助光產品線各產品億級代碼全量構建時長縮短20倍,組件間集成周期從1周縮短到1小時;通過云的彈性調度能力,實現構建資源的按需獲取和低成本構建,構建服務器消耗從3.6萬臺降低到1萬臺。

面向未來,華為云CodeArts Build將基于AI決策實現更為高效、精準的彈性調度能力,面向更多復雜語言的軟件產品,實現多語言的編譯構建框架,與客戶、伙伴和廣大開發(fā)者一起,不斷書寫軟件世界的新篇章。

審核編輯黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 分布式
    +關注

    關注

    1

    文章

    824

    瀏覽量

    74396
  • 華為云
    +關注

    關注

    3

    文章

    2343

    瀏覽量

    17105
收藏 人收藏

    評論

    相關推薦

    華為分布式存儲連續(xù)三年榮膺2024年Gartner“客戶之選”

    近日,全球權威咨詢與分析機構Gartner發(fā)布《2024年Gartner Peer InsightsTM 分布式文件系統(tǒng)與對象存儲“客戶之聲”》報告,華為憑借其OceanStor
    的頭像 發(fā)表于 05-24 10:12 ?511次閱讀

    軟件開發(fā)生產線 CodeArts 3 月新特性上線啦!

    年 3 月,CodeArts 主要發(fā)布編譯構建的相關新特性,具體內容如下: 編譯構建
    的頭像 發(fā)表于 05-10 00:28 ?1057次閱讀

    華為開發(fā)者桌面全新發(fā)布 CodeArts IDE for Python,極致優(yōu)雅云原生開發(fā)體驗

    近日,華為正式發(fā)布 CodeArts IDE for Python,這是一款內置華為自研 Python 語言服務,提供智能編程、靈活調試能
    的頭像 發(fā)表于 05-10 00:27 ?1112次閱讀
    <b class='flag-5'>華為</b><b class='flag-5'>云</b>開發(fā)者桌面全新<b class='flag-5'>發(fā)布</b> <b class='flag-5'>CodeArts</b> IDE for Python,極致優(yōu)雅云原生開發(fā)體驗

    華為正式發(fā)布CodeArts IDE for Python

    近日,華為正式發(fā)布CodeArts IDE for Python,這是一款內置華為自主創(chuàng)新的Python語言服務,提供智能編程、靈活調試能
    的頭像 發(fā)表于 05-08 14:58 ?380次閱讀

    華為 CodeArts Snap,揭開智能研發(fā)新篇章

    帶來全新的編程方式和體驗。 華為智能開發(fā)助手 CodeArts Snap 源于華為自身的研發(fā)實踐 華為擁有千億行的代碼規(guī)模、超過 11 萬
    的頭像 發(fā)表于 04-07 17:11 ?788次閱讀

    華為制品倉庫 CodeArts Artifact:保障制品質量與安全的最佳選擇

    、安全、好用的軟件包管理工具。 什么是制品倉庫服務 隨著軟件研發(fā)的規(guī)模和復雜度迅速擴大,處理海量制品的存儲與版本管理的需求以及開發(fā)過程中的繁瑣性逐漸增加。因此,制品倉庫成為了不可或缺的平臺。 華為制品倉庫服務 CodeArts
    的頭像 發(fā)表于 04-07 11:52 ?739次閱讀
    <b class='flag-5'>華為</b><b class='flag-5'>云</b>制品倉庫 <b class='flag-5'>CodeArts</b> Artifact:保障制品質量與安全的最佳選擇

    OpenHarmony 移植:build lite 編譯構建過程

    這些疑惑,會對 build lite 編譯構建過程有個更深入的理解。 1、產品解決方案代碼是如何被調用編譯的 在文件 buildliteBUILD.gn 配置文件中的
    的頭像 發(fā)表于 02-19 16:19 ?803次閱讀

    分布式大屏控制系統(tǒng)的工作原理

    分布式大屏控制系統(tǒng)是一種基于分布式計算、計算和大數據技術的控制系統(tǒng),具有高效、穩(wěn)定、靈活的特點。該系統(tǒng)
    的頭像 發(fā)表于 01-29 14:24 ?536次閱讀

    分布式系統(tǒng)硬件資源池原理和接入實踐

    /distributed_hardware_components_cfg.json 三個接口的 so 實現后,編譯打包到系統(tǒng)庫路徑下,同時配置到分布式硬件部件配置文件中,設備組網上線后,可以看到
    發(fā)表于 12-06 10:02

    zookeeper分布式原理

    Zookeeper是一個開源的分布式協(xié)調服務,可以用于構建高可用、高性能的分布式系統(tǒng)。它提供了一個簡單且高效的層次命名空間,可以用來存儲配置信息、狀態(tài)信息、命名服務等。Zookeepe
    的頭像 發(fā)表于 12-03 16:33 ?519次閱讀

    springcloud分布式事務解決方案

    Spring Cloud是一套用于構建分布式系統(tǒng)的開源框架,它提供了一系列組件和工具,可以幫助開發(fā)人員快速構建和管理基于微服務架構的應用程序。在分布
    的頭像 發(fā)表于 11-16 11:03 ?1883次閱讀

    springclould分布式教程

    Spring Cloud是一個基于Spring Boot的分布式系統(tǒng)開發(fā)工具,它提供了一系列的分布式系統(tǒng)解決方案,可以幫助開發(fā)者快速構建和部
    的頭像 發(fā)表于 11-16 10:59 ?383次閱讀

    華為鴻蒙系統(tǒng)

    華為鴻蒙系統(tǒng)(HUAWEI Harmony OS),是華為公司在2019年8月9日于東莞舉行的華為開發(fā)者大會(HDC.2019)上正式發(fā)布
    發(fā)表于 11-02 19:39

    開箱即用!教你如何正確使用華為編譯構建服務CodeArts Build!

    在數字化時代,軟件編譯構建效率關系著企業(yè)能否快速響應客戶需求,提供更好的客戶體驗。華為編譯構建
    的頭像 發(fā)表于 10-29 15:50 ?608次閱讀
    開箱即用!教你如何正確使用<b class='flag-5'>華為</b><b class='flag-5'>云</b><b class='flag-5'>編譯</b><b class='flag-5'>構建</b>服務<b class='flag-5'>CodeArts</b> <b class='flag-5'>Build</b>!

    分布式文件系統(tǒng)的設計原理是什么?

    什么是分布式文件系統(tǒng)?分布式文件系統(tǒng)(DFS)是一種計算機文件系統(tǒng),使用戶能夠從多個分布式位置存
    的頭像 發(fā)表于 10-17 17:35 ?680次閱讀