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

來(lái)源:華為云
作者:華為云
時(shí)間:2023-02-15
1458
在數(shù)字化時(shí)代,軟件編譯構(gòu)建效率關(guān)系著企業(yè)能否快速響應(yīng)客戶(hù)需求,提供更好的客戶(hù)體驗(yàn)。

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

以汽車(chē)行業(yè)為例,隨著汽車(chē)數(shù)智升級(jí)的加速,主機(jī)廠商往往通過(guò)OTA模式快速更新軟件,以帶給客戶(hù)更佳的用車(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)化

軟件是將源代碼及其所依賴(lài)的二進(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ù)器;

第二步,依賴(lài)二進(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è)插件,用戶(hù)開(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é),幫助用戶(hù)快速完成持續(xù)集成系統(tǒng)的搭建。

640.png

代碼下載快:基于文件內(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í)代碼的高效下載。

640.jpg

編譯速度快:大規(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)的依賴(lài)識(shí)別,實(shí)現(xiàn)編譯命令的按需分發(fā),在節(jié)約成本的基礎(chǔ)上成倍提升構(gòu)建效率。

640 (1).jpg

組件集成快:提供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)建工程存在依賴(lài)的復(fù)雜構(gòu)建場(chǎng)景,華為云CodeArts Build提供了BuildFlow編排模式,開(kāi)發(fā)或集成工程師基于多組件依賴(lài)關(guān)系的按需編排,可讓構(gòu)建任務(wù)按照任務(wù)依賴(lài)關(guān)系以有向無(wú)環(huán)圖的方式構(gòu)建。

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

640 (2).jpg

多代碼倉(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下載工具,用戶(hù)只需進(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)高效下載。

640 (3).jpg

資源利用效率高:支持企業(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)建資源的高效利用。

640 (4).jpg

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

例如,CodeArts Build通過(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)建框架,與客戶(hù)、伙伴和廣大開(kāi)發(fā)者一起,不斷書(shū)寫(xiě)軟件世界的新篇章。

立即登錄,閱讀全文
原文鏈接:點(diǎn)擊前往 >
文章來(lái)源:華為云
版權(quán)說(shuō)明:本文內(nèi)容來(lái)自于華為云,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
近6成金融機(jī)構(gòu)的選擇!華為云GaussDB加快金融核心系統(tǒng)轉(zhuǎn)型
近6成金融機(jī)構(gòu)的選擇!華為云GaussDB加快金融核心系統(tǒng)轉(zhuǎn)型
當(dāng)前,數(shù)據(jù)庫(kù)在金融機(jī)構(gòu)的應(yīng)用正在從辦公、一般系統(tǒng)逐步邁入核心系統(tǒng)應(yīng)用的深水區(qū)。如何構(gòu)建安全可靠、高效穩(wěn)定的核心系統(tǒng)數(shù)據(jù)庫(kù),支持業(yè)務(wù)運(yùn)營(yíng)和管理決策,成為了眾多金融機(jī)構(gòu)關(guān)注的焦點(diǎn)問(wèn)題。
華為云
2024-07-04
華為云以系統(tǒng)性創(chuàng)新加速千行萬(wàn)業(yè)智能化升級(jí)
華為云以系統(tǒng)性創(chuàng)新加速千行萬(wàn)業(yè)智能化升級(jí)
華為云全球銷(xiāo)售收入達(dá)553億元人民幣,是全球增長(zhǎng)最快的主流云廠商之一。
華為云
2024-04-22
華為云發(fā)布新型工業(yè)互聯(lián)網(wǎng)平臺(tái)參考架構(gòu)
華為云發(fā)布新型工業(yè)互聯(lián)網(wǎng)平臺(tái)參考架構(gòu)
近日,在華為分析師大會(huì)上,華為混合云副總裁胡玉海重磅發(fā)布《新型工業(yè)互聯(lián)網(wǎng)平臺(tái)參考架構(gòu)》白皮書(shū),在傳統(tǒng)工業(yè)互聯(lián)網(wǎng)的基礎(chǔ)上,融入大模型的能力,讓智能化賦能新型工業(yè)化。
華為云
云服務(wù)
2024-04-22
支撐核心系統(tǒng)分布式改造,GaussDB為江南農(nóng)商銀行筑穩(wěn)根基
支撐核心系統(tǒng)分布式改造,GaussDB為江南農(nóng)商銀行筑穩(wěn)根基
在移動(dòng)互聯(lián)網(wǎng)快速普及的當(dāng)下,金融機(jī)構(gòu)能否提供便捷、智能、個(gè)性化的金融服務(wù),成為關(guān)乎業(yè)務(wù)開(kāi)展和企業(yè)成長(zhǎng)的重要命題。
華為云
2024-01-25
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開(kāi)掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家