今天给大家带来华为云全栈自研的代码托管平台——CodeArts Repo 的介绍,希望对大家企业内部开发当中的代码托管平台选型提供一个极佳的选择方案。
一、代码托管发展史
版本控制系统发展史简单概括经历了三代,下面给大家简单介绍一下:
1.1 第一代
无网络部署,一次只能操作一个文件,基于同步锁阻塞机制,典型的产品:RCS、SCCS
1.2 第二代
集中式网络部署,一次可以操作多个文件,支持并发操作不过需要先本地合并,然后提交到版本库,典型的产品:CVS、Subversion、SourceSafe、微软的TFS版本控制系统
1.3 第三代
分布式网络部署,基于变更集的方式操作多个文件,支持并发,需要先提交,然后再合并到版本库,典型的产品:Git、Mercurial、Bazaar。
其中第三代是以Git为典型代表的分布式版本控制系统(Distributed Version Control System),Git诞生于2002年,由Linux之父Linus Torvalds带领Linux开源社区开发完成。初衷是用其管理Linux内核的庞大的开源代码,后续被GitHub、Gitlab等国际开源软件发扬光大,目前被大多数开源项目和企业项目所使用。Git属于当前代码托管的主流技术。
二、CodeArts Repo 介绍
CodeArts Repo(前身CodeHub) 是华为全栈自研的代码托管服务平台,它基于Git提供分布式代码管理和协同开发能力。提供了成员管理、权限控制、代码托管、代码检查、代码审核、代码追溯、CI/CD集成等实用功能,助力不同规模企业提升研发质量和研发效率。
二、CodeArts Repo 功能架构
2.1 研发协同
单仓开发协同:代码浏览、合并请求、代码检视、文件搜索、保护分支、合入门禁(代码合并检查机制)
多仓开发协同:多仓检视、Change-id、多仓提交、挑单合入、原子合入、细粒度权限。
2.2 代码管理功能
仓库&分支管理:仓库管理、分支管理、tag管理、历史管理
组织权限管理:成员管理、角色管理、权限管理、组织管理
检视&门禁:文件对比、门禁判断、评论、代码审核
系统集成:需求系统、缺陷系统、CI/CD、自定义扩展
2.3 代码存储特性
稳定性:多中心、容灾、多活、容器化部署、弹性化伸缩
性能:多副本、分布式数据库、分布式缓存、分布式部署
安全:漏洞感知、智能监控、防篡改、加密存储、阻断隔离、最小权限、态势感知、攻击探测
三、CodeArts Repo 技术能力
对外接口:支持SSh/HTTPS、Web Portal、APIs、WebHooks Stream event。
运维监控:现网告警、现网拔测、API监控、全链路监控、存储带宽监控、流量监控、容量监控、升级运维、异常访问监控。
三、华为云代码托管技术发展历程
2010:预研代码仓技术、选型
2013:基于Gitlab改造、完成华为代码仓上线
2019:完成自研、自主可控代码仓上线
2020:完成华为内部所有代码仓统一管理
2022:支撑20万研发人员使用的成熟CodeArts Repo代码托管平台完成。
四、CodeArts Repo使用场景介绍
4.1 仓库管理员
活动:在项目初期创建仓库、初始化代码、仓库配置设置,同时完成仓库成员管理、权限管理、配置保护分支权限的配置。
交互方式:界面操作、API接口和代码托管服务交互
4.2 开发人员日常开发活动
活动:上传、拉取代码;拉取分支、创建MR、协作开发;在线监视代码、修复代码、关联需求缺陷单。
交互方式:命令行、开发工具、浏览器
4.3 代码审核活动
活动:在线查看代码、检视代码代码审核、代码责任田守护;门禁、代码合入;管理Committer权限。
交互方式:开发工具、浏览器
4.4 自动化系统配置员
活动:流水线webhook等配置;流水线构建触发;门禁、项目级CI、版本级CI 对接。
交互方式:Webhook、API
4.5 测试人员
活动:测试代码上传、下载;出测试软件包。
交互方式:浏览器
4.6 版本经理发版本
活动:锁库、发版本打tag
交互方式:浏览器
4.7 QA/产品经理
活动:审计度量、E2E追溯审计
交互方式:API
五、CodeArts Repo 产品优势
5.1 全栈自研,安全无忧
基于云原生架构全栈自研,Cell化部署,独有的分片加密存储,IP白名单和细粒度的访问权限控制,加密传输,异地容灾备份,为您提供云端极致安全和韧性的代码托管服务。
5.2 高效代码协同开发
内置华为多年变革实践成果,覆盖云、管、端车等各类开发协同场景,支持不同规模团队包括微服务devops和大型团队协同开发,内置各类规则和模板,确保团队高效协同.
5.3 多层级代码质量防护
基于代码分支和成员角色的代码上库作业流控制,配合工具自动化检查和人工审核流程内嵌华为CleanCode实践成果,保证每一行上库代码的质量。
5.4 以代码为中心的研发资产追溯
作为研发核心资产的代码,让你清晰了解每一行代码的来龙去脉,提供从需求、设计、Story、代码、缺陷到产品版本的完整追溯路径,方便版本跟踪和问题修复。
六、应用场景介绍
6.1 团队级别的开发协同
优势
云端代码存储,开箱即用
简易开发流程,快速迭代开发
多种协同开发模式选择(分支开发/Fork仓开发)
随时随地检视代码
链无缝集成自动化流水线
6.2 企业级别的开发协同
优势
跨团队,跨地域协同开发
组织级代码开发规范
多角色细粒度权限控制
多种内嵌模板,统一开发过程
研发资产数据分析和洞察
丰富的扩展点,方便企业集成
代码核心资产备份
七、CodeArts Repo特性介绍
7.1 代码审核上库门禁
特性:多层级、细粒度代码上库质量门禁
支持人工审核、自动化流水线集成对上库代码进行质量管控,不符合质量指标的代码不允许入库,人工审核支持权责分离原则 (SOD),自动化检查支持分支级管控
7.2 代码检视
特性:多形式的代码检视活动
支持基于文件的随心检视、合并请求代码检视能力,让团队集中检视或者分散式协同检视,支持检视模板、检视人自动分配、检视任务通知设置检视意见可跟踪,可闭环
7.3 细粒度权限控制
特性:基于角色的细粒度权限控制
针对仓库管理、仓库配置、代码开发等活动提供细粒度的权限控制,不同成员的代码访问权限支持分支级权限管控,提升协同开发效率和确保代码安全。
7.4 围绕代码的E2E追溯
特性:围绕代码的研发资产追溯
提供从需求、任务、设计、缺陷、代码、版本的记录追溯,掌握每一样代码的来龙去脉,方便网上问题定位和审计。
7.5 仓库规范及模板
特性:丰富的仓库模板,标准化的团队开发活动
提供仓库模板,代码检视模板,合并请求模板,可配置必填和选填字段,确保团队开发行为统一,更加方便的基于研发数据做效能分析和改进。
7.6 安全和韧性
特性:提供极致安全和韧性
基于云原生架构全栈自研,提供极致韧性和安全的代码托管能力,源于华为实践成果,覆盖云、管、端、车、IT等超大产品协同开发,10亿级代码管理,万人团队并发在线协同作业高并发代码下载,超大存储容量.
7.7 多作业流支持
特性:提供多种开发作业协同方式
提供基于Git的多种开发协作模式,既适合中小企业灵活开发模式,也支持中大型企业的复杂开发协作模式。
7.8 全栈自研
特性:华为全栈自研
全新的云化架构,基于云原生架构分层构建,cell集群化部署,智能副本调度,配合独创的压缩存储技术,提升代码并发访问上限,支持超大规模、超大团队协同开发。
八、使用CodeArts Repo的关键流程
8.1 确定开发规范
设定默认分支:master
确定保护分支:master与 develop
确定分支的命名规范:
¡Features/abc[特性描述]
¡hotfix/115[问题单日期]
确定版本的命名规范,并用这个规范来打标签
确定团队内部统一的Commit规范
确定合并请求的参与者,职责
8.2 确定开发流程
创建仓库
开发人员下载代码
创建工作分支
提交代码
创建合并请求
邀请团队成员,参与代码评审
仓库管理员,审视后合入代码
8.3 配置仓库规则
大家通过官方帮助文档进行详细学习如何配置仓库规则。
成长地图_代码托管 CodeArts Repo_华为云 (huaweicloud.com)
下面展示配置仓库规则的一些界面效果,相信对大家了解CodeArts Repo会非常有帮助,大家一起来看看吧。
提交规则
编辑提交规则
项目成员管理
设置分支的保护策略
编辑保护分支
合并请求设置界面
设置代码审合并请求策略
代码合并审核效果界面
代码检视审核详情界面
九、总结
这款华为自研的代码托管平台,涵盖了代码托管领域几乎所有的功能特性比如(权限控制、安全性、高性能、代码审核机制、版本日志记录、多作业流的支持等等),对于企业和软件公司来说是非常不错的选择。