激發(fā)創(chuàng)造力:CodeArts Repo帶你領(lǐng)略高效代碼協(xié)同開發(fā)之道

一、代碼托管發(fā)展史

版本控制系統(tǒng)發(fā)展史簡(jiǎn)單概括經(jīng)歷了三代,下面給大家簡(jiǎn)單介紹一下:
1、第一代
無(wú)網(wǎng)絡(luò)部署,一次只能操作一個(gè)文件,基于同步鎖阻塞機(jī)制,典型的產(chǎn)品:RCS、SCCS
2、第二代
集中式網(wǎng)絡(luò)部署,一次可以操作多個(gè)文件,支持并發(fā)操作不過需要先本地合并,然后提交到版本庫(kù),典型的產(chǎn)品:CVS、Subversion、SourceSafe、微軟的TFS版本控制系統(tǒng)
3、第三代
分布式網(wǎng)絡(luò)部署,基于變更集的方式操作多個(gè)文件,支持并發(fā),需要先提交,然后再合并到版本庫(kù),典型的產(chǎn)品:Git、Mercurial、Bazaar。
其中第三代是以Git為典型代表的分布式版本控制系統(tǒng)(Distributed Version Control System),Git誕生于2002年,由Linux之父Linus Torvalds帶領(lǐng)Linux開源社區(qū)開發(fā)完成。初衷是用其管理Linux內(nèi)核的龐大的開源代碼,后續(xù)被GitHub、Gitlab等國(guó)際開源軟件發(fā)揚(yáng)光大,目前被大多數(shù)開源項(xiàng)目和企業(yè)項(xiàng)目所使用。Git屬于當(dāng)前代碼托管的主流技術(shù)。
二、CodeArts Repo 介紹

CodeArts Repo(前身CodeHub) 是華為全棧自研的代碼托管服務(wù)平臺(tái),它基于Git提供分布式代碼管理和協(xié)同開發(fā)能力。提供了成員管理、權(quán)限控制、代碼托管、代碼檢查、代碼審核、代碼追溯、CI/CD集成等實(shí)用功能,助力不同規(guī)模企業(yè)提升研發(fā)質(zhì)量和研發(fā)效率。
三、CodeArts Repo 功能架構(gòu)

1、研發(fā)協(xié)同
單倉(cāng)開發(fā)協(xié)同:代碼瀏覽、合并請(qǐng)求、代碼檢視、文件搜索、保護(hù)分支、合入門禁(代碼合并檢查機(jī)制)
多倉(cāng)開發(fā)協(xié)同:多倉(cāng)檢視、Change-id、多倉(cāng)提交、挑單合入、原子合入、細(xì)粒度權(quán)限。
2、代碼管理功能
- 倉(cāng)庫(kù)&分支管理:倉(cāng)庫(kù)管理、分支管理、tag管理、歷史管理
- 組織權(quán)限管理:成員管理、角色管理、權(quán)限管理、組織管理
- 檢視&門禁:文件對(duì)比、門禁判斷、評(píng)論、代碼審核
- 系統(tǒng)集成:需求系統(tǒng)、缺陷系統(tǒng)、CI/CD、自定義擴(kuò)展
3、代碼存儲(chǔ)特性
- 穩(wěn)定性:多中心、容災(zāi)、多活、容器化部署、彈性化伸縮。
- 性能:多副本、分布式數(shù)據(jù)庫(kù)、分布式緩存、分布式部署。
- 安全:漏洞感知、智能監(jiān)控、防篡改、加密存儲(chǔ)、阻斷隔離、最小權(quán)限、態(tài)勢(shì)感知、攻擊探測(cè)。
四、CodeArts Repo 技術(shù)能力
- 對(duì)外接口:支持SSh/HTTPS、Web Portal、APIs、WebHooks Stream event。
- 運(yùn)維監(jiān)控:現(xiàn)網(wǎng)告警、現(xiàn)網(wǎng)拔測(cè)、API監(jiān)控、全鏈路監(jiān)控、存儲(chǔ)帶寬監(jiān)控、流量監(jiān)控、容量監(jiān)控、升級(jí)運(yùn)維、異常訪問監(jiān)控。
五、華為云代碼托管技術(shù)發(fā)展歷程
- 2010:預(yù)研代碼倉(cāng)技術(shù)、選型。
- 2013:基于Gitlab改造、完成華為代碼倉(cāng)上線。
- 2019:完成自研、自主可控代碼倉(cāng)上線。
- 2020:完成華為內(nèi)部所有代碼倉(cāng)統(tǒng)一管理。
- 2022:支撐20萬(wàn)研發(fā)人員使用的成熟CodeArts Repo代碼托管平臺(tái)完成。

六、CodeArts Repo使用場(chǎng)景介紹

1、倉(cāng)庫(kù)管理員
- 活動(dòng):在項(xiàng)目初期創(chuàng)建倉(cāng)庫(kù)、初始化代碼、倉(cāng)庫(kù)配置設(shè)置,同時(shí)完成倉(cāng)庫(kù)成員管理、權(quán)限管理、配置保護(hù)分支權(quán)限的配置。
- 交互方式:界面操作、API接口和代碼托管服務(wù)交互。
2、開發(fā)人員日常開發(fā)活動(dòng)
- 活動(dòng):上傳、拉取代碼;拉取分支、創(chuàng)建MR、協(xié)作開發(fā);在線監(jiān)視代碼、修復(fù)代碼、關(guān)聯(lián)需求缺陷單。
- 交互方式:命令行、開發(fā)工具、瀏覽器。
3、代碼審核活動(dòng)
- 活動(dòng):在線查看代碼、檢視代碼代碼審核、代碼責(zé)任田守護(hù);門禁、代碼合入;管理Committer權(quán)限。
- 交互方式:開發(fā)工具、瀏覽器。
4、自動(dòng)化系統(tǒng)配置員
- 活動(dòng):流水線webhook等配置;流水線構(gòu)建觸發(fā);門禁、項(xiàng)目級(jí)CI、版本級(jí)CI 對(duì)接。
- 交互方式:Webhook、API。
5、測(cè)試人員
- 活動(dòng):測(cè)試代碼上傳、下載;出測(cè)試軟件包。
- 交互方式:瀏覽器。
6、版本經(jīng)理發(fā)版本
- 活動(dòng):鎖庫(kù)、發(fā)版本打tag。
- 交互方式:瀏覽器。
7、QA/產(chǎn)品經(jīng)理
- 活動(dòng):審計(jì)度量、E2E追溯審計(jì)。
- 交互方式:API。
七、CodeArts Repo 產(chǎn)品優(yōu)勢(shì)
1、全棧自研,安全無(wú)憂

基于云原生架構(gòu)全棧自研,Cell化部署,獨(dú)有的分片加密存儲(chǔ),IP白名單和細(xì)粒度的訪問權(quán)限控制,加密傳輸,異地容災(zāi)備份,為您提供云端極致安全和韌性的代碼托管服務(wù)。
2、高效代碼協(xié)同開發(fā)

內(nèi)置華為多年變革實(shí)踐成果,覆蓋云、管、端車等各類開發(fā)協(xié)同場(chǎng)景,支持不同規(guī)模團(tuán)隊(duì)包括微服務(wù)devops和大型團(tuán)隊(duì)協(xié)同開發(fā),內(nèi)置各類規(guī)則和模板,確保團(tuán)隊(duì)高效協(xié)同.
3、多層級(jí)代碼質(zhì)量防護(hù)

基于代碼分支和成員角色的代碼上庫(kù)作業(yè)流控制,配合工具自動(dòng)化檢查和人工審核流程內(nèi)嵌華為CleanCode實(shí)踐成果,保證每一行上庫(kù)代碼的質(zhì)量。
4、以代碼為中心的研發(fā)資產(chǎn)追溯

作為研發(fā)核心資產(chǎn)的代碼,讓你清晰了解每一行代碼的來龍去脈,提供從需求、設(shè)計(jì)、Story、代碼、缺陷到產(chǎn)品版本的完整追溯路徑,方便版本跟蹤和問題修復(fù)。
八、應(yīng)用場(chǎng)景介紹
1、團(tuán)隊(duì)級(jí)別的開發(fā)協(xié)同

優(yōu)勢(shì)
- 云端代碼存儲(chǔ),開箱即用
- 簡(jiǎn)易開發(fā)流程,快速迭代開發(fā)
- 多種協(xié)同開發(fā)模式選擇(分支開發(fā)/Fork倉(cāng)開發(fā))
- 隨時(shí)隨地檢視代碼
- 鏈無(wú)縫集成自動(dòng)化流水線
2、企業(yè)級(jí)別的開發(fā)協(xié)同

優(yōu)勢(shì)
- 跨團(tuán)隊(duì),跨地域協(xié)同開發(fā)
- 組織級(jí)代碼開發(fā)規(guī)范
- 多角色細(xì)粒度權(quán)限控制
- 多種內(nèi)嵌模板,統(tǒng)一開發(fā)過程
- 研發(fā)資產(chǎn)數(shù)據(jù)分析和洞察
- 豐富的擴(kuò)展點(diǎn),方便企業(yè)集成
- 代碼核心資產(chǎn)備份
九、CodeArts Repo特性介紹
1、代碼審核上庫(kù)門禁

- 特性:多層級(jí)、細(xì)粒度代碼上庫(kù)質(zhì)量門禁。
- 支持人工審核、自動(dòng)化流水線集成對(duì)上庫(kù)代碼進(jìn)行質(zhì)量管控,不符合質(zhì)量指標(biāo)的代碼不允許入庫(kù),人工審核支持權(quán)責(zé)分離原則 (SOD),自動(dòng)化檢查支持分支級(jí)管控。
2、代碼檢視

- 特性:多形式的代碼檢視活動(dòng)。
- 支持基于文件的隨心檢視、合并請(qǐng)求代碼檢視能力,讓團(tuán)隊(duì)集中檢視或者分散式協(xié)同檢視,支持檢視模板、檢視人自動(dòng)分配、檢視任務(wù)通知設(shè)置檢視意見可跟蹤,可閉環(huán)。
3、細(xì)粒度權(quán)限控制

- 特性:基于角色的細(xì)粒度權(quán)限控制。
- 針對(duì)倉(cāng)庫(kù)管理、倉(cāng)庫(kù)配置、代碼開發(fā)等活動(dòng)提供細(xì)粒度的權(quán)限控制,不同成員的代碼訪問權(quán)限支持分支級(jí)權(quán)限管控,提升協(xié)同開發(fā)效率和確保代碼安全。
4、圍繞代碼的E2E追溯

- 特性:圍繞代碼的研發(fā)資產(chǎn)追溯。
- 提供從需求、任務(wù)、設(shè)計(jì)、缺陷、代碼、版本的記錄追溯,掌握每一樣代碼的來龍去脈,方便網(wǎng)上問題定位和審計(jì)。
5、倉(cāng)庫(kù)規(guī)范及模板

- 特性:豐富的倉(cāng)庫(kù)模板,標(biāo)準(zhǔn)化的團(tuán)隊(duì)開發(fā)活動(dòng)。
- 提供倉(cāng)庫(kù)模板,代碼檢視模板,合并請(qǐng)求模板,可配置必填和選填字段,確保團(tuán)隊(duì)開發(fā)行為統(tǒng)一,更加方便的基于研發(fā)數(shù)據(jù)做效能分析和改進(jìn)。
6、安全和韌性

- 特性:提供極致安全和韌性。
- 基于云原生架構(gòu)全棧自研,提供極致韌性和安全的代碼托管能力,源于華為實(shí)踐成果,覆蓋云、管、端、車、IT等超大產(chǎn)品協(xié)同開發(fā),10億級(jí)代碼管理,萬(wàn)人團(tuán)隊(duì)并發(fā)在線協(xié)同作業(yè)高并發(fā)代碼下載,超大存儲(chǔ)容量.
7、多作業(yè)流支持

- 特性:提供多種開發(fā)作業(yè)協(xié)同方式。
- 提供基于Git的多種開發(fā)協(xié)作模式,既適合中小企業(yè)靈活開發(fā)模式,也支持中大型企業(yè)的復(fù)雜開發(fā)協(xié)作模式。
8、全棧自研

- 特性:華為全棧自研。
- 全新的云化架構(gòu),基于云原生架構(gòu)分層構(gòu)建,cell集群化部署,智能副本調(diào)度,配合獨(dú)創(chuàng)的壓縮存儲(chǔ)技術(shù),提升代碼并發(fā)訪問上限,支持超大規(guī)模、超大團(tuán)隊(duì)協(xié)同開發(fā)。
十、使用CodeArts Repo的關(guān)鍵流程

1、確定開發(fā)規(guī)范
- 設(shè)定默認(rèn)分支:master。
- 確定保護(hù)分支:master與 develop。
確定分支的命名規(guī)范:
?Features/abc[特性描述]。
?hotfix/115[問題單日期]。
- 確定版本的命名規(guī)范,并用這個(gè)規(guī)范來打標(biāo)簽。
- 確定團(tuán)隊(duì)內(nèi)部統(tǒng)一的Commit規(guī)范。
- 確定合并請(qǐng)求的參與者,職責(zé)。

2、確定開發(fā)流程
- 創(chuàng)建倉(cāng)庫(kù)
- 開發(fā)人員下載代碼
- 創(chuàng)建工作分支
- 提交代碼
- 創(chuàng)建合并請(qǐng)求
- 邀請(qǐng)團(tuán)隊(duì)成員,參與代碼評(píng)審
- 倉(cāng)庫(kù)管理員,審視后合入代碼

3、配置倉(cāng)庫(kù)規(guī)則
大家通過官方幫助文檔進(jìn)行詳細(xì)學(xué)習(xí)如何配置倉(cāng)庫(kù)規(guī)則。
成長(zhǎng)地圖_代碼托管 CodeArts Repo_華為云 (huaweicloud.com)。

下面展示配置倉(cāng)庫(kù)規(guī)則的一些界面效果,相信對(duì)大家了解CodeArts Repo會(huì)非常有幫助,大家一起來看看吧。
提交規(guī)則:

編輯提交規(guī)則:

項(xiàng)目成員管理:

設(shè)置分支的保護(hù)策略:

編輯保護(hù)分支:

合并請(qǐng)求設(shè)置界面:

設(shè)置代碼審合并請(qǐng)求策略:

代碼合并審核效果界面:

代碼檢視審核詳情界面:

十一、總結(jié)
這款華為自研的代碼托管平臺(tái),涵蓋了代碼托管領(lǐng)域幾乎所有的功能特性比如(權(quán)限控制、安全性、高性能、代碼審核機(jī)制、版本日志記錄、多作業(yè)流的支持等等),對(duì)于企業(yè)和軟件公司來說是非常不錯(cuò)的選擇。





























