编译构建有什么作用

编译构建旨在支撑企业实现高效的软件开发,缩短产品上市周期,帮助企业的软件产品快速形成关键竞争力。

编译构建为开发者提供配置简单的混合语言构建平台,实现编译构建云端化,支撑企业实现持续交付,缩短交付周期,提升交付效率。

编译构建支持编译构建任务一键创建、配置和执行,实现获取代码、构建、打包等活动自动化,实时监控构建状态,让您更加快速、高效地进行云端编译构建。

编译构建支持业界主流语言与构建标准:Java、C、C++、PHP、Groovy、C#、JS、Python和GO语言,以及Android与Embedded应用;同时增大了环境适配范围以及用户自定义模板功能。

如何提升软件编译构建效率?

编译构建效率的提升是个系统工程,需要构建工程、构建工具、构建环境等各个方面协同优化。通过自动化的构建过程、高效的构建机制、最大化共享的基础设施,才可实现端到端的编译构建效率提升。

第一、将编译构建的过程自动化

软件是将源代码及其所依赖的二进制文件等,通过编译、链接、打包等过程形成的二进制文件。通过持续集成实现编译构建的自动化,已在业界普遍推行。软件生成过程的自动化能够减少人工干预和重复操作,实现软件的快速验证,更快地发现错误并修复。

“持续集成是一种软件开发实践,团队成员频繁地集成他们的工作,通常每人每天至少集成一次,每次集成通过自动化构建(含测试)能够更高效地查找错误,使团队更加迅速地开发软件。

第二、将自动化的每个环节提速

保持快速的构建,每减少一分钟的构建时间,就为每个开发人员在每次提交时节省一分钟。

编译构建通常包含如下过程:

第一步,将代码下载到构建服务器;

第二步,依赖二进制下载到构建服务器;

第三步,编译、链接、打包;

第四步,归档软件包或镜像。

编译构建过程中每个环节都可能成为构建效率的瓶颈,从而导致软件产品开发迭代效率低、发布周期长。如车载软件往往基于AOSP(Android Open Source Project,Android开放源代码项目)开发,代码仓多达数百甚至上千个代码量达千万行甚至亿行规模,一次软件构建长达数小时。

提升代码下载效率和编译效率,是提升软件开发迭代效率、缩短软件发布周期的关键。

第三、最大化地共享基础设施

在企业内部的开发场景中,各个开发团队往往独自搭建基础设施,每个团队或个人独占自建的构建资源,导致有的团队构建资源冗余而浪费,有的团队构建资源不足而开发效率低下。

通过云化将基础设施的算力充分共享,实现统一调度,是解决上述问题的最有效方式,不但能更加高效地构建基础设施,也可大幅节省资源。

编译构建新特性

环境搭建快:开箱即用,环境无感知,快速搭建持续集成系统

华为云编译构建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 Repo、GitHub、通用Git、码云或来自流水线。

选择构建模板:编译构建支持Maven/Ant/Gradle/CMake等主流构建标准,预置了对应的构建模板,可根据需要选择工具版本;如果默认的工具版本满足不了用户需求,编译构建支持用户自定义构建环境,通过自定义制作镜像或者使用公共镜像进行构建,实现用户特殊构建需求。

配置构建步骤:编译构建预置了丰富的构建步骤,用户可以根据需要自定义组合。

配置参数信息:详见构建参数

执行任务

展示最近一次流水线的执行信息:分支、最近一次代码提交的CommitID及描述等信息。

查看构建结果

任务执行完成后,可查看任务执行结果,详见查看构建任务

编译构建常见问题

编译构建常见问题

  • 当前用户没有开通CodeArts Build服务

    问题现象

    执行编译构建任务失败,异常信息为:当前用户没有开通CodeArts Build服务。

    原因分析

    未开通编译构建服务,或费用不足,请开通编译构建服务或为编译构建服务充值。


  • 权限不足,无法获取信息

    问题现象

    执行编译构建任务失败,异常信息为:权限不足,无法获取信息。

    原因分析

    用户不知道自己的角色或者角色被修改时,导致执行编译构建的权限不足,无法操作该任务。

    处理方法

    联系任务的管理员(任务创建者、项目创建者)配置任务的操作权限。

    进入任务的“权限管理”页面,开启对应操作权限。


  • 任务执行中止

    编译构建单个构建任务单次构建最大时长限制为:1小时(非付费用户)/4小时(付费用户),构建时长如果超过了系统限定值,系统会强制中止任务执行。


  • 构建环境中有Android,对于IOS是否有支持计划

    编译构建功能目前不支持IOS,暂无明确的支持计划。