摘要:华为云代码托管服务CodeArts Repo已于2月20日22:00正式上线,这是一款全栈自研、基于Git的云端代码托管服务,旨在保护企业核心代码资产安全,提升企业研发质量和效率。

本文分享自华为云社区《稳定可靠安全无忧,华为云发布代码托管服务CodeArts Repo》,作者:华为云头条 。

2022年2月,黑客窃取某著名公司大量源码,包含硬件原理图、源代码、显卡驱动源码等信息,并对企业勒索巨额赎金;3月,全球最大的开源代码托管网站经历了多次长达数个多小时的宕机,数百万开发者无法提交代码,导致开发活动中断。

源代码是企业最宝贵的资产之一,一旦保存源代码的系统出现安全性或稳定性问题,将给企业商业及信誉带来不可估量的损失。随着软件规模的不断扩大,生成软件的源代码规模也在急剧上升,单个软件系统规模已达数亿行、开发人员达数千人——如何管理好庞大的源代码,并让企业员工持续稳定的开展软件开发活动将成为一个重大的挑战。

2月20日,华为云代码托管服务CodeArts Repo将于22:00正式上线,这是一款全栈自研、基于Git的云端代码托管服务,旨在保护企业核心代码资产安全,提升企业研发质量和效率。

代码管理工具是软件开发的基础

不断提升研发质量和效率,缩短TTM(Time to Market)是软件企业商业成功的关键。如今,一款软件通常由多人协作开发而成,代码管理工具不仅是研发资产的重要载体,同时也支撑了版本化配置管理、代码开发的工作流等活动,通过与CI/CD工具服务集成,能够有效提升团队协作效率和自动化交付效率。

▲代码管理工具在开发活动中发挥着关键作用

为了让代码资产更加安全和稳定,一款现代化代码管理工具应当具备如下主要能力:

版本控制:包含代码存储功能,支持代码上传和下载,并能够简单、准确地记录和重现代码的任何一个历史版本。

协同开发:支持多人协同开发,如不同开发人员可同时在同一个软件模块上工作,同时对同一代码部分做不同的修改,即使是跨地域分布的开发团队也能互不干扰。

质量管控:提供在线阅读代码和代码检视功能,支持自动化持续集成与持续交付工具(CI/CD),对代码进行质量检查,确保符合质量的代码才能入库。

稳定可靠:支持多人并发在线作业,并发上传和下载代码,保持长期稳定,以保障企业研发活动不中断。

安全防护:能够保护企业的代码核心资产安全,抵御黑客盗取代码、对源代码投毒、恶意代码注入等攻击。

华为云CodeArts Repo,让代码核心资产安全无忧

为了支撑业务的高速发展,华为公司内部代码管理工具也在不断演进。从最开始满足基本配置管理需求,到支撑公司内源协同开发,再到支撑公司可信变革、达成CleanCode目标,华为的代码管理工具经历了“商用+开源”,到“边买边造”,再到“自给自足”的三个阶段。

自2019年来,通过历时3年的“云化改造、安全韧性构筑、全栈自研”三大战役,华为基于云原生打造了高安全、高韧性、全场景开发工作流覆盖的可信代码仓。

如今,华为云CodeArts Repo管理并保护着华为1100亿行代码,支撑15万人开发作业,日均1亿次下载量、1PB传输流量、3亿次API调用,一套系统支撑了华为嵌入式、云、终端、车等各类型产品代码管理和协同开发。

现在,华为云将内部多年积累的代码管理能力沉淀到CodeArts Repo工具,发布6大特性。

特性一:自研内核,确保代码安全,稳定高效开发

针对开源代码管理工具漏洞多、单体架构、存在连续性风险,和无法满足华为大规模、多场景开发作业流等问题,华为云CodeArts Repo通过自研内核,基于零信任思想进行设计和安全加固,从黑客视角建立攻击路径模型,落地6大类100+小类安全措施,从接入层、业务层,存储层到基础设施层全面构筑安全防护能力,确保代码不丢,系统不破,代码资产可恢复。

此外,华为成立了“蓝军”部门,每年例行专门针对代码托管工具进行模拟攻击测试,以攻促防,不断提升CodeArts Repo的安全能力。

为应对公司巨量业务增长,CodeArts Repo在架构上充分利用云原生技术优势,基于云化基础设施,实现容灾、备份、流控、服务降等,保障了业务不中断和数据不丢失,多维度提升可靠性。

CodeArts Repo在技术上突破底层硬件IO带宽限制、修改Git内核提升文件下载寻址效率、应用多级缓存等手段提升代码下载效率,经测试,相比开源同类产品具有超过10倍的写入、超过50倍的读取能力提升,可支撑万级并发下载,10万级并发在线作业。

特性二:覆盖基于Git的主要工作流,满足多种开发场景

华为云CodeArts Repo支持Git Flow、Gitlab Flow、Github Flow等所有工作流。华为将以前使用Gitlab、Github、Gerrit部署的100多套系统归一到CodeArts Repo一套系统,期间经历了超过10000条来自华为各产品线的需求锤炼,不断完善和优化,既能满足强流程规范的大规模产品协同开发,也适用于采用DevOps模式、快速上线的产品开发。

特性三:多形式代码检视活动,提升代码质量,传递开发经验

《代码大全》的研究结果显示,各种研发活动中,代码检视的代码检测率高达60%,可以有效提前发现显而易见的错误随代码上库,提升代码质量,并且实现高级开发人员的知识传递,增强团队质量意识。

华为云CodeArts Repo提供分散式和集中式的代码检视能力,支持团队随时开展代码检视活动。

以合并请求为例,开发人员发起代码合并请求后,系统可自动分配给不同检视人员,检视人员利用碎片化时间检视代码,配合门禁系统保证检视意见关闭才能合入该合并请求。团队成员也可以集中到一起,直接在浏览器中打开代码仓文件,进行在线检视,提出检视意见后使跟踪流程闭环检视意见。

另外,CodeArts Repo提供灵活的检视意见分类功能,既集成华为优秀的实践,使用此功能可以有效规范团队检视活动,同时沉淀团队经验和知识,将知识在公司、产品、项目等不同范围内传递。

特性四:质量门禁,确保每一行入库代码Clean

在软件生命周期中,缺陷发现越早、修复越早,缺陷的影响和修复代价就越小,数据显示,产品发布后每个缺陷的平均修复成本是验证阶段的6倍以上。因此为了避免有缺陷的代码合入主干,灵活有效的门禁控制必不可少。

华为云CodeArts Repo提供“人工审核+CICD自动化检查”双重看护代码质量机制。通过保护分支功能,针对不同的角色控制代码的推送和合并权限,确保代码在推送入库的时候就符合质量要求。

配合CI/CD自动化检查工具链,提供代码静态检查、安全检查、测试结果验证、代码检视人员角色和数量检查、检视意见闭环率等几十种细粒度门禁控制策略,用户可灵活配置以满足不同的企业规范。

特性五:记录代码来龙去脉,双向可追溯

软件的可追溯性是软件工程的基础属性,具备可追溯性是良好的软件工程能力的客观呈现。可追溯性要求软件生产过程中从需求分析到编码、构建、验证、发布过程中产生的需求、设计、代码、用例、缺陷、发布等业务对象以及其关系的准确记录。

华为云CodeArts Repo支持建立工作项和合并请求或者代码提交commit的双向关联关系,实现软件开发过程可追溯,通过可信的开发过程,保障结果可信。

以华为内部为例,团队通过在代码托管工具设置规则,确保了每次的代码入库都有对应的工作项,通过对关联关系数据进行识别、监控和预警,及时发现不合规的代码,提高产品质量。企业也可以在处理现网问题时根据关联关系找到对应的代码版本,快速修复。

特性六:内置多种模板,确保开发规范有序

软件开发是一项创造性的活动,也是一项复杂的多人协同活动。在软件开发过程中,企业需要选择适合的开发工作流,并建立规范的开发协作流程来保障产品能够持续高质量交付。

华为云CodeArts Repo凝聚了华为公司内部各类研发场景的规范,可以帮助企业进行组织级开发规则制定和落地,促进产品质量和开发效率提升。

典型如代码提交规则、分支/tag命名规则,代码上库审核规则、代码质量门禁规则等,也提供了灵活的模板配置能力,如仓库模板、代码检视模板、合并请求模板。企业可以通过这些规范确保团队开发行为一致,产生的研发数据格式一致,并基于研发数据做效能分析,持续改进研发能力。

得益于以上特性,华为云CodeArts Repo如今已广泛应用于国内外财政、社保、物流、能源等领域,加速企业数字化转型。

如上海某知名大型物流企业拥有超过100个系统平台,1000多个仓库,其业务涉及快递、物流、跨境、仓储与供应链等多项业务和解决方案。该企业使用CodeArts Repo管理代码和协助规范企业开发活动,有效提升研发团队协作效率,降低代码质量问题70%

源于华为,服务世界,华为云CodeArts Repo着力将华为公司30余年的源代码管理经验外溢,服务千百行业。面向未来,华为云将对CodeArts Repo持续创新升级,探索边缘下载加速、多仓协同,提供更丰富的安全检查特性,携手国内外客户、伙伴以及开发者,共同提升软件开发质量和效率。

点击关注,第一时间了解华为云新鲜技术~

CodeArts Repo:6大特性助力企业代码稳定可靠安全无忧的更多相关文章

  1. H5游戏定制,4大优势助力企业曝光10W+

    H5游戏定制,4大优势助力企业曝光10W+ 移动互联网已成为了人们生活的一部分,普通广告形式已很难吸引用户的眼球,企业要怎样才能将广告更广泛的传播给更多用户呢?根据TOM游戏多年从业经验,为大家分享以 ...

  2. Java 11必掌握的8大特性,完美代码信手拈来

    [MyEclipse CI 2019.4.0安装包下载] 美国时间 09 月 25 日,Oralce正式发布了Java 11,这是据Java 8以后支持的首个长期版本.从官方发布的支持路线图表看出,J ...

  3. jdk8十大特性并代码demo(转)

    一.十大特性 1.Lambda表达式 2.Stream函数式操作流元素集合 3.接口新增:默认方法与静态方法 4.方法引用,与Lambda表达式联合使用 5.引入重复注解 6.类型注解 7.最新的Da ...

  4. 阿里云智能数据构建与管理 Dataphin公测,助力企业数据中台建设

    阿里云智能数据构建与管理 Dataphin (下简称“Dataphin”)近日重磅上线公共云,开启智能研发版本的公共云公测!在此之前,Dataphin以独立部署方式输出并服务线下客户,已助力多家大型客 ...

  5. 京东云数据库 RDS助力企业便捷运维

    iPhone6发布那年,京东在国贸等商圈送货最快速度数分钟,包括从下单到送达.这是一个极端的富含营销因素例子.即便如此,常态来看,隔天到货的这种业务模式,也是基于同样的支撑:营销业务.物流业务,大数据 ...

  6. BPM助力企业数字化转型

    自九十年代末,流程管理开始引入国内,至今已经有20多年的历史了,由最初的部门级应用向企业级应用转变,大家的认知也经历了一系列的发展变化.不同阶段的信息化水平对企业的流程以及BPM平台也提出了不同的需求 ...

  7. AngularJS-chapter1-2-四大特性

    4大特性 MVC MVC实例  数据模型,控制器,视图 HelloAngular_MVC.html 图中的 ng-controller="HelloAngular"  定义了Hel ...

  8. ES6的十大特性和认知

    ---恢复内容开始--- ES6(ECMAScript2015)的出现,无疑给前端开发人员带来了新的惊喜,它包含了一些很棒的新特性,可以更加方便的实现很多复杂的操作,提高开发人员的效率.本文主要针对E ...

  9. 前端开发者不得不知的es6十大特性(转)

    转载自AlloyTeam:http://www.alloyteam.com/2016/03/es6-front-end-developers-will-have-to-know-the-top-ten ...

  10. 前端开发者不得不知的ES6十大特性

    前端开发者不得不知的ES6十大特性 转载 作者:AlloyTeam 链接:http://www.alloyteam.com/2016/03/es6-front-end-developers-will- ...

随机推荐

  1. go使用snmp库查询mib数据

    转载请注明出处: OID(Object Identifier)是一种用于标识和唯一命名管理信息库中的对象的标准方式.给定一个OID,可以确定特定的管理信息库对象,并对其进行操作. go语言使用snmp ...

  2. STM32 + ESP32(AT固件 MQTT协议) + MQTTX(桌面终端) + (EMQX消息服务器)

    翻出老物件,搭建一个简单的 IOT 开发环境,也算是废物利用了 ,接下来加传感器.1. STM32  采集数据:     RTOS.     资源相对比较丰富,可以根据项目需求定制.2. ESP32  ...

  3. umich cv-6-1 循环神经网络基本知识

    这节课中介绍了循环神经网络的第一部分,主要介绍了循环神经网络的基本概念,vanilla循环网络架构,RNN的一些应用,vanilla架构的问题,更先进的rnn架构比如GRU和LSTM 循环神经网络基本 ...

  4. 一些 trick 和思考收获

    2023.1.7 P1117 优秀的拆分 对于一眼看上去只能直接求解的题可以设置一些节点变为求每个节点的贡献 *2023 7.24 补充:这个 trick 也被称为设置关键点,通常用于区间长度固定或是 ...

  5. Hooks的核心原理梳理

    我们前端都在诟病专业版,它的组件,它的耦合嵌套之深,它的性能. 我们希望改善,我们认为,如果--就好了. 如果重构就好了,如果技术栈统一就好了,如果有规范就好了. 其实,不用等,我们只要在写代码,就可 ...

  6. JUC并发编程学习笔记(七)常用的辅助类

    常用的辅助类 CountDownLatch 这是一个JUC计数器辅助类,计数器有加有减,这是减. 使用方法 package org.example.demo; import java.util.con ...

  7. 自定义springboot-starter 动态数据源

    自定义springboot-starter 动态数据源 如果使用的是spring或springboot框架,spring提供了一个实现动态数据源的一个抽象类AbstractRoutingDataSou ...

  8. Linux驱动开发笔记(五):驱动连接用户层与内核层的文件操作集原理和Demo

    前言   驱动写好后,用户层使用系统函数调用操作相关驱动从而实现与系统内核的关联,本篇主要就是理解清楚驱动如何让用户编程来实现与内核的交互.   杂项设备文件操作集 cd /usr/src/linux ...

  9. MVC控制器传DataTable

    MVC中,控制器return Json(DataTable)会出现错误: 序列化类型为"System.Reflection.RuntimeModule"的对象时检测到循环引用. 解 ...

  10. vertx的学习总结三

    一.event bus是什么 各个verticle的通信 二.point-to-point, request-reply, publish/subscribe 通过 the event bus 例题一 ...