传统本地编译构建的问题
○ 环境搭建耗时费力,且易因环境差异引入问题
研发人员耗费大量精力到环境的搭建配置及调测,不能聚焦业务开发。不仅造成开发人员精力的浪费,也由于时间消耗带来等待成本。同时,很难保证本地构建环境的完全同步,引发问题;
○ 本地硬件配置不高,编译构建速度慢
众所周知,编译构建硬件资源消耗大,但中小型企业和创业者受资金投入限制,硬件配置普遍不高,造成编译构建速度慢,影响开发效率;
○ 突发项目资源消耗大,结束后闲置
企业经常有突发性项目,对编译构建资源的需求突发性增加,让企业陷入两难境地,既不想影响突发项目进度,又不愿投入大量资金购买后期闲置设备;
○ 多语言不能并行构建
随着互联网的迅猛发展,多语言混合编程成为常态,本地构建环境受硬件限制,难于在同一环境上支持多种构建语言和应用类型并发构建。
云端编译构建优势
云端编译构建,在云上集中编译构建资源,通过统一平台和调度,为软件企业或者个人按需分配资源,提供软件编译构建服务。其具有本地构建无可比拟的优势,必将成为软件编译构建的主流方式。
○ 把开发人员从繁琐的环境搭建解脱出来
开发人员不再关注构建环境软硬件、安装配置及维护,代码提交后,指定需要的构建类型,系统即可自动分配相应资源完成构建出包。开发人员可完全聚焦于业务实现,降低开发成本;
○ 构建成本低
软件企业不再需要有自己独立的构建环境,只需按照实际占用的构建资源及时长,支付相应费用。避免企业一次性的大量资金投入,对个人创业者更是具有极大的吸引力;
○ 构建环境统一
所有构建都基于相同的环境和配置,企业和用户再也不用担心因为环境差异带来的头痛问题。而且云端构建环境,由专业人士统一维护和升级,可快速跟踪和更新为业界主流构建标准和高效工具,快速提升构建质量和效率;
○ 资源共享和按需分配
云端构建可在构建资源上预装多种构建环境,收到构建请求时,再根据需要动态分配环境和构建任务,任务完成后即刻释放资源,真正做到按需分配和资源共享;
○ 混合语言并行构建
云端构建具有海量的构建资源,通过统一的调度算法,可指定构建任务到不同的构建资源上并行执行,很好地满足互联网开发混合语言并行构建的需要;
○ 构建速度快
云端构建不仅可大幅提高硬件配置来提升构建速度,还可利用海量的构建资源,采用分布式构建等技术手段,实现本地构建无法企及的构建速度,大幅提升构建效率,减少人员等待时间。
云端编译构建体系结构
云端编译构建服务一般由构建任务执行层、构建任务调度层、构建任务管理层和Web访问和操作层组成。
构建任务执行层负责构建任务的真正执行;
构建任务调度层负责构建任务和资源的分配和调度;
构建任务管理层负责构建任务的常规管理及构建结果的收集展示;
Web访问和操作层负责为web访问和操作提供支持。
云端编译构建关键技术点
为了发挥自身优势,云端软件编译构建又采用了许多有别于传统构建的技术手段。
○ 任务和资源高效调度
任务和资源高效调度,是云端编译构建需要具备的基础能力,不仅需要准确匹配构建任务要求和资源,同时其效率和任务的并发度,也是影响构建效率的关键因素。在设计和搭建云端编译构建服务时,需要重点考虑;
○ 构建环境安全
云端构建的最大好处就是多用户对构建环境的重用,但在构建时,必然要将用户源码下载到构建环境。对不同企业或者用户来说,就存在安全隐患,如何保证源码(包括编译临时文件)在不同用户和企业间隔离,也是云端构建需要解决的重点问题;
○ 构建类型动态扩展
由于互联网业务种类繁多,需要支持的构建语言和类型也日新月异,所以云端构建需要具备构建类型动态扩展能力,比如通过插件快速加入新构建类型的的能力;
○ 资源弹性伸缩
云上承载的构建任务量总是在动态变化,为了避免长期占用宝贵的计算资源,云端构建需要具有资源弹性伸缩能力。构建需求量大时,能够自动申请基础资源并快速可靠创建构建环境;构建需求量减小时,自动释放构建资源给基础云,实现资源的最大化重用;
○ 分布式构建
为了最大程度地利用云端构建的海量资源来提升构建速度和构建并发能力,需要让构建任务在不同的构建资源中并行执行。如何最大程度地利用资源进行分布式构建,是云端构建的关键技术和核心能力;
○ 本地镜像仓库
为了提高构建速度,云端构建一般会提供本地镜像仓库,避免构建时再通过网络从中心仓库拉取依赖包。当然,为了保持仓库间软件包的同步,需要镜像仓库与远程中心仓库自动定期同步;
○ 构建环境容器化
云端构建最好能将构建环境容器化,减少环境依赖,以便快速复制构建环境,并在同一节点执行多个构建任务,提升系统并行构建能力。
华为软件开发云云端软件编译构建
软件云端软件编译构建是华为软件开发云提供的基础服务,目前已支持Web、移动终端、IoT三大应用构建;支持Maven、Ant、Gradle、Grails、cMake、CodeSourcery等主流构建标准。具备构建资源动态伸缩、构建任务零等待等优势,并通过多语言并行构建助力软件企业和个人大幅提升编译构建效率。