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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

科技怪授 ? 來(lái)源:科技怪授 ? 作者:科技怪授 ? 2023-03-24 15:20 ? 次閱讀

在數(shù)字化時(shí)代,軟件編譯構(gòu)建效率關(guān)系著企業(yè)能否快速響應(yīng)客戶需求,提供更好的客戶體驗(yàn)。

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

智能化、高體驗(yàn)的車(chē)載軟件已成為汽車(chē)的核心競(jìng)爭(zhēng)力,然而車(chē)載軟件通常包含上億行代碼,一次車(chē)載軟件的編譯集成需要數(shù)小時(shí),如何提升車(chē)載軟件的編譯構(gòu)建效率已成為汽車(chē)軟件競(jìng)爭(zhēng)力構(gòu)筑的關(guān)鍵路徑。

2月14日,華為云發(fā)布分布式編譯構(gòu)建系統(tǒng)CodeArts Build,旨在撐企業(yè)實(shí)現(xiàn)高效的軟件開(kāi)發(fā),縮短產(chǎn)品上市周期,幫助企業(yè)的軟件產(chǎn)品快速形成關(guān)鍵競(jìng)爭(zhēng)力。

如何提升軟件編譯構(gòu)建效率?

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

第一、將編譯構(gòu)建的過(guò)程自動(dòng)化

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

“持續(xù)集成是一種軟件開(kāi)發(fā)實(shí)踐,團(tuán)隊(duì)成員頻繁地集成他們的工作,通常每人每天至少集成一次,每次集成通過(guò)自動(dòng)化構(gòu)建(含測(cè)試)能夠更高效地查找錯(cuò)誤,使團(tuán)隊(duì)更加迅速地開(kāi)發(fā)軟件。

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

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

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

編譯構(gòu)建通常包含如下過(guò)程:

第一步,將代碼下載到構(gòu)建服務(wù)器;

第二步,依賴二進(jìn)制下載到構(gòu)建服務(wù)器;

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

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

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

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

第三、最大化地共享基礎(chǔ)設(shè)施

在企業(yè)內(nèi)部的開(kāi)發(fā)場(chǎng)景中,各個(gè)開(kāi)發(fā)團(tuán)隊(duì)往往獨(dú)自搭建基礎(chǔ)設(shè)施,每個(gè)團(tuán)隊(duì)或個(gè)人獨(dú)占自建的構(gòu)建資源,導(dǎo)致有的團(tuán)隊(duì)構(gòu)建資源冗余而浪費(fèi),有的團(tuán)隊(duì)構(gòu)建資源不足而開(kāi)發(fā)效率低下。

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

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

華為云CodeArts Build讓編譯構(gòu)建極速“狂飆”

在華為的敏捷軟件開(kāi)發(fā)歷程中,軟件的編譯構(gòu)建一直被重點(diǎn)關(guān)注。

從最初始的單機(jī)自動(dòng)化構(gòu)建、到多機(jī)自動(dòng)化構(gòu)建、再到云化的分布式構(gòu)建,如今,軟件的高效編譯構(gòu)建已很好地支撐了華為無(wú)線、數(shù)通、車(chē)、計(jì)算、存儲(chǔ)、終端等各個(gè)業(yè)務(wù)的高速發(fā)展,實(shí)現(xiàn)更高效的軟件發(fā)布。

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

具體來(lái)看,華為云CodeArts Build的極速構(gòu)建能力體現(xiàn)在如下六個(gè)方面:

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

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

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

代碼下載快:基于文件內(nèi)容指紋的代碼緩存技術(shù),讓代碼極速下載

隨著產(chǎn)品的規(guī)模增加,產(chǎn)品的代碼量也會(huì)急劇膨脹,構(gòu)建過(guò)程中的代碼下載時(shí)間也變得越來(lái)越長(zhǎng)。

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

華為云CodeArts Build提供代碼下載加速技術(shù),通過(guò)對(duì)源碼文件樹(shù)進(jìn)行特征識(shí)別碼計(jì)算,基于構(gòu)建專(zhuān)用的分布式文件存儲(chǔ)系統(tǒng),對(duì)源碼進(jìn)行權(quán)限加密和去重存儲(chǔ),實(shí)現(xiàn)文件一次緩存多次復(fù)用,大大減少了從代碼倉(cāng)下載文件的次數(shù)。

同時(shí),通過(guò)VPC內(nèi)的專(zhuān)用網(wǎng)絡(luò)通道,高效地從緩存復(fù)用代碼,從而實(shí)現(xiàn)構(gòu)建時(shí)代碼的高效下載。

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

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

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

組件集成快:提供BuildFlow編排模式,多任務(wù)并行構(gòu)建,實(shí)現(xiàn)多組件的高效集成

大型軟件項(xiàng)目往往涉及到多個(gè)團(tuán)隊(duì)協(xié)作開(kāi)發(fā),同時(shí)軟件構(gòu)建時(shí)也可能涉及多種計(jì)算架構(gòu)和多種操作系統(tǒng)。

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

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

通過(guò)高效、靈活的BuildFlow構(gòu)建模式,不僅可以滿足復(fù)雜的構(gòu)建要求,還可以將現(xiàn)有的構(gòu)建任務(wù)以模塊化的方式進(jìn)行拆分,通過(guò)多任務(wù)并行構(gòu)建,實(shí)現(xiàn)軟件包的快速構(gòu)建集成。

poYBAGQdT0uALfiWAAFjwtn_fQM455.png

多代碼倉(cāng)下載快:提供基于Repo工具的多倉(cāng)下載模式,實(shí)現(xiàn)多代碼倉(cāng)高效集成

智能終端、車(chē)載軟件、物聯(lián)網(wǎng)設(shè)備等嵌入式軟件領(lǐng)域,通常基于鴻蒙、AOSP等系統(tǒng)開(kāi)發(fā),一次構(gòu)建需要同時(shí)集成數(shù)百甚至上千個(gè)代碼倉(cāng),多代碼倉(cāng)的集成下載效率至關(guān)重要。

華為云CodeArts Build集成Repo下載工具,用戶只需進(jìn)行簡(jiǎn)單配置即可實(shí)現(xiàn)多個(gè)代碼倉(cāng)的聯(lián)動(dòng)集成下載。同時(shí)也可集成代碼緩存技術(shù),實(shí)現(xiàn)多個(gè)代碼倉(cāng)的聯(lián)動(dòng)高效下載。

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

華為云CodeArts Build通過(guò)統(tǒng)一彈性調(diào)度華為無(wú)線、數(shù)通、光、車(chē)、計(jì)算、存儲(chǔ)等各產(chǎn)品線的構(gòu)建資源,實(shí)現(xiàn)企業(yè)級(jí)數(shù)十萬(wàn)臺(tái)構(gòu)建資源的共享。相比各產(chǎn)品、項(xiàng)目團(tuán)隊(duì)自建、獨(dú)占構(gòu)建資源,可節(jié)省70%構(gòu)建資源。

同時(shí),對(duì)于不同產(chǎn)業(yè)的不同產(chǎn)品研發(fā)場(chǎng)景,提供對(duì)應(yīng)的編譯構(gòu)建算力,用極低成本實(shí)現(xiàn)高效的研發(fā)作業(yè)。通過(guò)實(shí)踐外溢,可幫助企業(yè)實(shí)現(xiàn)構(gòu)建資源的高效利用。

poYBAGQdT02AajiYAAFdm_7JdUs528.png

華為云CodeArts Build已支撐華為公司云計(jì)算、網(wǎng)絡(luò)、終端、芯片、汽車(chē)等各個(gè)業(yè)務(wù)的高速發(fā)展。

例如,CodeArtsBuild通過(guò)極致的構(gòu)建加速能力,幫助光產(chǎn)品線各產(chǎn)品億級(jí)代碼全量構(gòu)建時(shí)長(zhǎng)縮短20倍,組件間集成周期從1周縮短到1小時(shí);通過(guò)云的彈性調(diào)度能力,實(shí)現(xiàn)構(gòu)建資源的按需獲取和低成本構(gòu)建,構(gòu)建服務(wù)器消耗從3.6萬(wàn)臺(tái)降低到1萬(wàn)臺(tái)。

面向未來(lái),華為云CodeArts Build將基于AI決策實(shí)現(xiàn)更為高效、精準(zhǔn)的彈性調(diào)度能力,面向更多復(fù)雜語(yǔ)言的軟件產(chǎn)品,實(shí)現(xiàn)多語(yǔ)言的編譯構(gòu)建框架,與客戶、伙伴和廣大開(kāi)發(fā)者一起,不斷書(shū)寫(xiě)軟件世界的新篇章。

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 分布式
    +關(guān)注

    關(guān)注

    1

    文章

    919

    瀏覽量

    74572
  • 華為云
    +關(guān)注

    關(guān)注

    3

    文章

    2676

    瀏覽量

    17518
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    分布式化數(shù)據(jù)庫(kù)有哪些類(lèi)型

    分布式化數(shù)據(jù)庫(kù)有哪些類(lèi)型?分布式化數(shù)據(jù)庫(kù)主要類(lèi)型包括:關(guān)系型分布式數(shù)據(jù)庫(kù)、非關(guān)系型分布式數(shù)據(jù)
    的頭像 發(fā)表于 01-15 09:43 ?80次閱讀

    基于ptp的分布式系統(tǒng)設(shè)計(jì)

    在現(xiàn)代分布式系統(tǒng)中,精確的時(shí)間同步對(duì)于確保數(shù)據(jù)一致性、系統(tǒng)穩(wěn)定性和性能至關(guān)重要。PTP(Precision Time Protocol)是一種網(wǎng)絡(luò)協(xié)議,用于在分布式
    的頭像 發(fā)表于 12-29 10:09 ?145次閱讀

    華為軟件開(kāi)發(fā)生產(chǎn)線(CodeArts)11 月新功能特性

    華為軟件開(kāi)發(fā)生產(chǎn)線 CodeArts 是一站、全流程、安全可信的云原生 DevSecOps 平臺(tái),覆蓋需求、開(kāi)發(fā)、測(cè)試、部署、運(yùn)維等軟件交付全生命周期環(huán)節(jié),為開(kāi)發(fā)者打造全
    的頭像 發(fā)表于 12-18 09:23 ?297次閱讀

    華為軟件開(kāi)發(fā)生產(chǎn)線(CodeArts)10 月新功能特性

    【摘要】CodeArts 發(fā)布了測(cè)試計(jì)劃、流水線、軟件建模相關(guān)新特性,歡迎試用~ 華為軟件開(kāi)發(fā)生產(chǎn)線CodeArts是一站
    的頭像 發(fā)表于 12-01 16:16 ?435次閱讀

    華為分布式消息服務(wù) DMS 9 月新動(dòng)態(tài)上線啦!

    【摘要】 RocketMQ 5.X 專(zhuān)業(yè)版、kafka 監(jiān)控大屏、CloudPond 部署等多項(xiàng)特性,一睹為! 華為分布式消息服務(wù)DMS是完全托管的消息隊(duì)列服務(wù),可完全兼容業(yè)界主流
    的頭像 發(fā)表于 10-15 09:54 ?490次閱讀
    <b class='flag-5'>華為</b><b class='flag-5'>云</b><b class='flag-5'>分布式</b>消息服務(wù) DMS 9 月新動(dòng)態(tài)上線啦!

    計(jì)算廠家使用WDS分布式存儲(chǔ)構(gòu)建其高性能超融合一體機(jī)

    計(jì)算廠家使用WDS分布式存儲(chǔ)構(gòu)建其高性能超融合一體機(jī)
    的頭像 發(fā)表于 09-23 09:57 ?283次閱讀
    <b class='flag-5'>云</b>計(jì)算廠家使用WDS<b class='flag-5'>分布式</b>存儲(chǔ)<b class='flag-5'>構(gòu)建</b>其高性能超融合一體機(jī)

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

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

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

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

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

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

    華為發(fā)布 CodeArts API,為 API 護(hù)航

    4 月 10 日,華為正式發(fā)布 API 全生命周期管理一體化協(xié)作平臺(tái) CodeArts API,支持開(kāi)發(fā)者高效實(shí)現(xiàn) API 設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、托管、運(yùn)維、變現(xiàn)的一站
    的頭像 發(fā)表于 05-09 23:17 ?563次閱讀
    <b class='flag-5'>華為</b><b class='flag-5'>云</b><b class='flag-5'>發(fā)布</b> <b class='flag-5'>CodeArts</b> API,為 API 護(hù)航

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

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

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

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

    華為制品倉(cāng)庫(kù) CodeArts Artifact:保障制品質(zhì)量與安全的最佳選擇

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

    OpenHarmony 移植:build lite 編譯構(gòu)建過(guò)程

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

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

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