【云驻共创】CodeArts Repo ---高效代码协同开发之旅

目录

一、代码托管发展史  

1.1 第一代  

1.2 第二代  

1.3 第三代  

二、CodeArts Repo 介绍  

二、CodeArts Repo 功能架构  

2.1 研发协同  

2.2 代码管理功能  

2.3 代码存储特性  

三、CodeArts Repo 技术能力  

三、华为云代码托管技术发展历程  

四、CodeArts Repo使用场景介绍  

4.1 仓库管理员  

4.2 开发人员日常开发活动  

4.3 代码审核活动  

4.4 自动化系统配置员  

4.5 测试人员  

4.6 版本经理发版本  

4.7 QA/产品经理  

五、CodeArts Repo 产品优势  

5.1 全栈自研,安全无忧  

5.2 高效代码协同开发  

5.3 多层级代码质量防护  

5.4 以代码为中心的研发资产追溯  

六、应用场景介绍  

6.1 团队级别的开发协同  

6.2 企业级别的开发协同  

七、CodeArts Repo特性介绍  

7.1 代码审核上库门禁  

7.2 代码检视  

7.3 细粒度权限控制  

7.4 围绕代码的E2E追溯  

7.5 仓库规范及模板  

7.6 安全和韧性  

7.7 多作业流支持  

7.8 全栈自研  

八、使用CodeArts Repo的关键流程  

8.1 确定开发规范  

8.2 确定开发流程           

8.3 配置仓库规则  

九、总结  


今天给大家带来华为云全栈自研的代码托管平台——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会非常有帮助,大家一起来看看吧。

提交规则

图片

编辑提交规则

图片

项目成员管理

图片

设置分支的保护策略

图片

编辑保护分支

图片

合并请求设置界面

图片

设置代码审合并请求策略

         

图片

代码合并审核效果界面

图片

代码检视审核详情界面

图片

九、总结  

这款华为自研的代码托管平台,涵盖了代码托管领域几乎所有的功能特性比如(权限控制、安全性、高性能、代码审核机制、版本日志记录、多作业流的支持等等),对于企业和软件公司来说是非常不错的选择。

         

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu挂载ext4文件系统

文章目录 1.虚拟机分配10G磁盘用来挂载ext4文件系统2.磁盘分区3.创建文件系统4.挂载文件系统5.卸载文件系统6.使用ior测试ext4三种日志模式(1)ordered(2)journal(3)writeback 1.虚拟机分配10G磁盘用来挂载e…

SpringBoot项目修改Tomcat版本号

SpringBoot项目修改Tomcat版本号 前言如果项目是以jar包形式打包部署如果项目是以war包形式打包部署示例 仰天大笑出门去,我辈岂是蓬蒿人 前言 Springboot项目,默认是使用内嵌Tomcat servlet容器形式打包部署。关于怎么修改默认的版本号,捣鼓了好久终于…

PostgreSQL 设置时区,时间/日期函数汇总

文章目录 前言查看时区修改时区时间/日期操作符和函数时间/日期操作符日期/时间函数:extract,date_part函数支持的field 数据类型格式化函数用于日期/时间格式化的模式: 扩展 前言 本文基于 PostgreSQL 12.6 版本,不同版本的函数…

基于STM32设计的人体健康监护系统(华为云IOT)

一、设计需求 1.1 设计需求总结 根据需求,要求设计一款基于 STM32 的人体健康监护系统。采用系统模块化思路进行,将多个数模传感器收集到的数据和操作指令一并送至 STM32 中心处理器进行处理分析。 该系统可以实时监测被测者的心率、体温以及周围环境的温度,也同时可以通…

(vue)vue项目中引入外部字体

(vue)vue项目中引入外部字体 效果: 第一步 放置字体包,在assets下创建一个fonts文件夹,放入下载的字体文件 第二步 创建一个font.css文件用于定义这个字体包的名字 第三步 在App.vue的css中将这个css文件引入 第四步 页面使用 font-famil…

Qt : day1

1.聊天界面 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {qDebug() << this->size(); //获取当前页面尺寸this->setFixedSize(500, 600); //设置固定尺寸this->setWindowTitle("聊天框"); //设置窗口…

单Bank OTA升级:STM32G071 APP (二)

接上一篇文章&#xff1a;单Bank OTA升级&#xff1a;STM32G071 BootLoader (一)&#xff1a;跳转链接 什么是单Bank升级&#xff1a;将Flash划分为以下3个区域。 BootLoader区&#xff1a;程序进行升级的引导程序&#xff0c;根据Upade_Flag来判断跳转Bank区运行程序或是接收…

安卓开发后台应用周期循环获取位置信息上报服务器

问题背景 最近有需求&#xff0c;在APP启动后&#xff0c;退到后台&#xff0c;还要能实现周期获取位置信息上报服务器&#xff0c;研究了一下实现方案。 问题分析 一、APP退到后台后网络请求实现 APP退到后台后&#xff0c;实现周期循环发送网络请求。目前尝试了两种方案是…

Spring 中一个少见的引介增强 IntroductionAdvisor

我们平时做 AOP 开发的时候&#xff0c;基本上都是增强某一个方法&#xff0c;在某一个方法执行之前或者执行之后做一些事情&#xff0c;这种叫做 PointcutAdvisor&#xff0c;实际上&#xff0c;Spring 中的 Advisor 大致可以分为两种类型&#xff0c;除了 PointcutAdvisor 之…

Openlayers实战,Openlayers实现一个车辆转向运动轨迹动画,支持根据轨迹运动方向自动改变车头转向角度,无需定时器,丝滑小车转向运动效果

专栏目录: OpenLayers入门教程汇总目录 前言 本章作为OpenLayers入门文章《OpenLayers入门,OpenLayers动画效果实现,OpenLayers实现轨迹运动动画》的的增强进阶篇章,实现了入门教程中没有实现的小车车头方向根据运动方向自动转向的功能。 本章代码不使用任何setTimeout和…

金融中的数学:贝叶斯公式

1.贝叶斯定理 贝叶斯定理是概率论中的一项重要定理&#xff0c;用于在已知某一事件的条件下&#xff0c;求另一事件发生的概率。它是根据条件概率推导出来的&#xff0c;得名于英国数学家托马斯贝叶斯。 贝叶斯定理可以表示为&#xff1a; 这个式子就是贝叶斯公式&#xff0c…

解决FLink:Missing required options are: slot.name

[ERROR] Could not execute SQL statement. Reason: org.apache.flink.table.api.ValidationException: One or more required options are missing.Missing required options are:slot.name解决 https://ververica.github.io/flink-cdc-connectors/release-2.4/content/connec…

提升 API 可靠性的五种方法

API 在我们的数字世界中发挥着关键的作用&#xff0c;使各种不同的应用能够相互通信。然而&#xff0c;这些 API 的可靠性是保证依赖它们的应用程序功能正常、性能稳定的关键因素。本文&#xff0c;我们将探讨提高 API 可靠性的五种主要策略。 1.全面测试 要确保 API 的可靠性…

Seata部署(Centos和Docker)

一、简介 Seata 是一款开源的分布式事务框架。致力于在微服务架构下提供高性能和简单易用的分布式事务服 务。在 Seata 开源之前&#xff0c;Seata 对应的内部版本在阿里经济体内部一直扮演着分布式一致性中间件的⻆ 色&#xff0c;帮助经济体平稳的度过历年的双11&#xff0c…

11 spring-boot的MVC配置原理

11.1 spring-boot为MVC提供的自动配置 1.ContentNegotiatingViewResolver视图解析器&#xff1b; 2.静态资源或者支持WebJars&#xff1b; 3.自动注册类型转换器&#xff1a;比如说前台提交user的字段&#xff0c;后台自动封装的意思&#xff1b; 4.HttpMessageConverters&…

Vue中TodoList案例_勾选

与上一篇Vue中TodoList案例_添加有三个文件变化了 App.vue&#xff1a;中加了checkTodo方法 <template><div id"root"><div class"todo-container"><div class"todo-wrap"><MyHeader :addTodo"addTodo"/&…

Linux学习之case

case的格式如下&#xff1a; case "变量" in值1)指令集1;;值2)指令集2;;*)指令集n;; esaccase会将变量的值跟值1、值2等进行比较&#xff0c;符合就执行后边对应的指令集&#xff0c;注意)只是一个标识&#xff0c;表明这是一个分支&#xff0c;;;是一个分支结束&am…

Sentinel 规则持久化到 Nacos

一、Sentinel规则管理模式&#x1f349; Sentinel的控制台规则管理有三种模式&#xff1a; 原始模式&#x1f95d; 原始模式&#xff1a;控制台配置的规则直接推送到Sentinel客户端&#xff0c;也就是我们的应用。然后保存在内存中&#xff0c;服务重启则丢失 pull模式&#…

对于MyBatis的深入介绍

对于MyBatis的深入介绍 当涉及到数据库操作时&#xff0c;MyBatis是一种广泛使用的ORM&#xff08;对象关系映射&#xff09;框架。MyBatis的主要目标是简化数据库交互&#xff0c;并提供对SQL的灵活控制。下面是对MyBatis的详细介绍&#xff1a; 数据库交互&#xff1a;MyBat…

平台化的测试工具推荐|一站式测试平台RunnerGo

互联网行业的发展到今天越来越多的公司更加注重工作效率和团队协作&#xff0c;越来越多的产品也趋于平台化&#xff0c;平台化也更有利于提高团队效率&#xff0c;代码管理、持续构建、持续部署这些工具的发展都是非常超前的&#xff0c;它们对于团队协作的支持和工作效率的提…