在數字化時代,軟件編譯構建效率關系著企業能否快速響應客戶需求,提供更好的客戶體驗。
以汽車行業為例,隨著汽車數智升級的加速,主機廠商往往通過OTA模式快速更新軟件,以帶給客戶更佳的用車體驗。
智能化、高體驗的車載軟件已成為汽車的核心競爭力,然而車載軟件通常包含上億行代碼,一次車載軟件的編譯集成需要數小時,如何提升車載軟件的編譯構建效率已成為汽車軟件競爭力構筑的關鍵路徑。
2月14日,華為云發布分布式編譯構建系統CodeArts Build,旨在撐企業實現高效的軟件開發,縮短產品上市周期,幫助企業的軟件產品快速形成關鍵競爭力。
如何提升軟件編譯構建效率?
編譯構建效率的提升是個系統工程,需要構建工程、構建工具、構建環境等各個方面協同優化。通過自動化的構建過程、高效的構建機制、最大化共享的基礎設施,才可實現端到端的編譯構建效率提升。
第一、將編譯構建的過程自動化
軟件是將源代碼及其所依賴的二進制文件等,通過編譯、鏈接、打包等過程形成的二進制文件。通過持續集成實現編譯構建的自動化,已在業界普遍推行。軟件生成過程的自動化能夠減少人工干預和重復操作,實現軟件的快速驗證,更快地發現錯誤并修復。
“持續集成是一種軟件開發實踐,團隊成員頻繁地集成他們的工作,通常每人每天至少集成一次,每次集成通過自動化構建(含測試)能夠更高效地查找錯誤,使團隊更加迅速地開發軟件。
軟件開發大師Martin Fowler”
第二、將自動化的每個環節提速
保持快速的構建,每減少一分鐘的構建時間,就為每個開發人員在每提交時節省一分鐘。
編譯構建通常包含如下過程:
第一步,將代碼下載到構建服務器;
第二步,依賴二進制下載到構建服務器;
第三步,編譯、鏈接、打包;
第四步,歸檔軟件包或鏡像。
每個環節都可能成為構建效率的瓶頸,從而導致軟件產品開發迭代效率低、發布周期長。如車載軟件往往基于AOSP(Android Open Source Project,Android開放源代碼項目)開發,代碼倉多達數百甚至上千個代碼量達千萬行甚至億行規模,一次軟件構建長達數小時。
提升代碼下載效率和編譯效率,是提升軟件開發迭代效率、縮短軟件發布周期的關鍵。
第三、最大化地共享基礎設施
在企業內部的開發場景中,各個開發團隊往往獨自搭建基礎設施,每個團隊或個人獨占自建的構建資源,導致有的團隊構建資源冗余而浪費,有的團隊構建資源不足而開發效率低下。
通過云化將基礎設施的算力充分共享,實現統一調度,是解決上述問題的最有效方式,不但能更加高效地構建基礎設施,也可大幅節省資源。
由此可見,云化是編譯構建系統的不二選擇。
華為云CodeArts Build讓編譯構建極速“狂飆”
在華為的敏捷軟件開發歷程中,軟件的編譯構建一直被重點關注。
從最初始的單機自動化構建、到多機自動化構建、再到云化的分布式構建,如今,軟件的高效編譯構建已很好地支撐了華為無線、數通、車、計算、存儲、終端等各個業務的高速發展,實現更高效的軟件發布。
華為云CodeArts Build當前已支撐華為6萬研發人員的軟件高效集成,每日構建任務量達77萬次,集中彈性調度24.8萬臺構建服務器。通過代碼按需下載、云化、分布式、精準增量、彈性調度等關鍵技術,端到端加速軟件集成過程,讓開發人員編譯結果分鐘級反饋、版本包30分鐘集成、億級代碼全量構建1小時完成。
具體來看,華為云CodeArts Build的極速構建能力體現在如下六個方面:
環境搭建快:開箱即用,環境無感知,快速搭建持續集成系統
華為云CodeArts Build內置130多種構建環境、30多個模板、20多個插件,用戶開箱即用。同時,CodeArts Build支持多平臺、多系統構建,包括x86、ARM等計算架構,以及Linux、Windows、MacOS等操作系統。
通過內置上述的跨平臺環境,可消除人工搭建編譯服務器、配置持續集成軟件等環節,幫助用戶快速完成持續集成系統的搭建。
代碼下載快:基于文件內容指紋的代碼緩存技術,讓代碼極速下載
隨著產品的規模增加,產品的代碼量也會急劇膨脹,構建過程中的代碼下載時間也變得越來越長。
以AOSP項目13版本為例,代碼量為140G,千兆帶寬全量下載一次代碼需要20分鐘左右,代碼下載時長成為影響構建效率的關鍵瓶頸之一。如果將代碼固定到構建執行機上,每次構建增量下載,又可能會存在代碼不一致或代碼在構建過程中被污染的問題。
華為云CodeArts Build提供代碼下載加速技術,通過對源碼文件樹進行特征識別碼計算,基于構建專用的分布式文件存儲系統,對源碼進行權限加密和去重存儲,實現文件一次緩存多次復用,大大減少了從代碼倉下載文件的次數。
同時,通過VPC內的專用網絡通道,高效地從緩存復用代碼,從而實現構建時代碼的高效下載。
編譯速度快:大規模分布式、精準增量編譯,突破單機物理限制,構建效率成倍提升
大型嵌入式項目通常包含數量龐大的模塊或組件,如車載軟件、基站、智能終端、存儲產品等,且C/C++代碼量巨大,上千萬行甚至上億行,編譯執行時間長是阻礙產品迭代開發效率提升的關鍵因素。傳統的軟件開發構建,一般在單機上編譯,受限于編譯服務器的性能,一次復雜軟件的全量構建時間往往長達幾小時甚至數十小時。
華為云CodeArts Build提供分布式編譯、精準增量等技術,突破單臺機器的性能瓶頸,通過云的大規模彈性資源實現C/C++語言的編譯加速。同時通過共享的分布式緩存和精準的依賴識別,實現編譯命令的按需分發,在節約成本的基礎上成倍提升構建效率。
組件集成快:提供BuildFlow編排模式,多任務并行構建,實現多組件的高效集成
大型軟件項目往往涉及到多個團隊協作開發,同時軟件構建時也可能涉及多種計算架構和多種操作系統。
如華為5G基站產品,一次軟件構建,需要集成來自4條產品線、20多個團隊提供的組件,并且需要同時在x86和ARM計算架構上集成出包。各個組件間基于軟件架構的設計,形成有向無環圖,需要一次完成軟件包的集成。
針對這一涉及到多個團隊協作、多種計算架構、多種操作系統和構建工程存在依賴的復雜構建場景,華為云CodeArts Build提供了BuildFlow編排模式,開發或集成工程師基于多組件依賴關系的按需編排,可讓構建任務按照任務依賴關系以有向無環圖的方式構建。
通過高效、靈活的BuildFlow構建模式,不僅可以滿足復雜的構建要求,還可以將現有的構建任務以模塊化的方式進行拆分,通過多任務并行構建,實現軟件包的快速構建集成。
多代碼倉下載快:提供基于Repo工具的多倉下載模式,實現多代碼倉高效集成
智能終端、車載軟件、物聯網設備等嵌入式軟件領域,通常基于鴻蒙、AOSP等系統開發,一次構建需要同時集成數百甚至上千個代碼倉,多代碼倉的集成下載效率至關重要。
華為云CodeArts Build集成Repo下載工具,用戶只需進行簡單配置即可實現多個代碼倉的聯動集成下載。同時也可集成代碼緩存技術,實現多個代碼倉的聯動高效下載。
資源利用效率高:支持企業范圍內的資源共享,高效利用構建資源
華為云CodeArts Build通過統一彈性調度華為無線、數通、光、車、計算、存儲等各產品線的構建資源,實現企業級數十萬臺構建資源的共享。相比各產品、項目團隊自建、獨占構建資源,可節省70%構建資源。
同時,對于不同產業的不同產品研發場景,提供對應的編譯構建算力,用極低成本實現高效的研發作業。通過實踐外溢,可幫助企業實現構建資源的高效利用。
華為云CodeArts Build已支撐華為公司云計算、網絡、終端、芯片、汽車等各個業務的高速發展。
例如,CodeArtsBuild通過極致的構建加速能力,幫助光產品線各產品億級代碼全量構建時長縮短20倍,組件間集成周期從1周縮短到1小時;通過云的彈性調度能力,實現構建資源的按需獲取和低成本構建,構建服務器消耗從3.6萬臺降低到1萬臺。
面向未來,華為云CodeArts Build將基于AI決策實現更為高效、精準的彈性調度能力,面向更多復雜語言的軟件產品,實現多語言的編譯構建框架,與客戶、伙伴和廣大開發者一起,不斷書寫軟件世界的新篇章。
審核編輯黃宇
-
分布式
+關注
關注
1文章
909瀏覽量
74559 -
華為云
+關注
關注
3文章
2606瀏覽量
17475
發布評論請先 登錄
相關推薦
評論