描述:

百度百科:Gerrit,一种免费、​​开放源代码​​的代码审查软件,使用网页界面。

需求:根据公司要求配置管理Gerrit码仓,因Gerrit的自身界面以及长时间使用gitlab的习惯,一时间无法快速上手故此留此篇。

1 设置项目管理员免密访问 Gerrit

项目管理员在Gerrit上做任何配置之前,需要先设置好与Gerrit之间的免密访问,下面以 CentOS-7.7.1908 x86-64 为例说明,Windows(Git Bash 中)下的免密访问配置与此相同:

(1) 本地生成 SSH Key:

ssh-keygen -t rsa -C lishilong@XXX.com  ,lishilong@xxx.com 是项目管理员的邮箱地址。

(2) 查看公钥:

cat .ssh/id_rsa.pub

(3) 登录 Gerrit 配置公钥:

Login into Gerrit as Project Owner: lishilong, 执行: 账户名 -> Settings -> SSH Keys -> New SSH Key -> 输入上一步的 Public Key -> Add NEW SSH KEY -> 单击 SAVE

CHANGES 按钮保存。示例效果:

1.1 创建项目

(1) 创建项目

以项目管理员账户如:lishilong 登录 Gerrit, BROWSE -> Repositories -> CREATE NEW

-> 输入 Repository Name(建议格式为:部门/业务单元 Code/应用 Code, 例如:IOT/PAAS_CI/ci_demo,下文已该项目为例),其他选项保持默认值,单击 CREATE 按钮创建项目。示例效果:

(2) 更新项目 Description

BROWSE -> Repositories -> 单击上一步新建的项目,Description 中输入描述信息(建议格式:<团队名称>:<一句话描述该项目>,以 ci_demo 源码为例说明:基础云:CI 示例项目,然后单击页面下方的 Save Changes 按钮保存。示例如下:

1.2 删除项目

项目管理员登录 Gerrit 后 -> BROWSE -> Repositories -> IOT/CI_PAAS/ci_demo -> Command-> 单击 DELETE PROJECT 按钮,在弹出的层中勾选: Delete project even if open chang, 在单击 DELETE 按钮删除。示例效果:

1.3 配置项目权限

本小节展示 Gerrit 上一个源码类项目的 Acces 配置示例,各开发团队可参考该部分操步骤配置

自己本团队的源码类项目。

1.3.1 授权规划

(1) 项目分支

规划 2 个分支:master:主分支;develop:活动分支;

本小节为了示例的需要,规划了 2 个分支,各项目管理员可根据项目的需要合理规划分支。

(2) 角色规划

ci_demo_owner: lishilong; 该角色是项目管理员申请加入 Gerrit 中的Administrators 组后获取到的(或者自己是管理员);Access: 查看项目信息(包括 Gitweb 超链接),创建项目,创建分支,创建 Tag, 创建 Group,配置项目权限,删除 CR 记录,+1,+2, Submit, Force Push 等权限;

ci_demo_leader: usera; Access: 查看项目信息(包括 Gitweb 超链接), 查看 Group 信息,发起 CR, 创建分支,创建 Tag, +1, +2, Submit; ci_demo_dev: userb;Access: 查看项目信息(包括 Gitweb 超链接), Group 信息,发起 CR。

1.3.2 创建 Leader 组和 Developer 组

根据角色规划,需要对 Leader(审核人员)创建一个组,如:ci_demo_leader。对开发者创建一个组,如: ci_demo_dev,而 ci_demo_owner 是由 Gerrit 的运维管理员统一创建的。

1.3.2.1 创建 Leader 组

(1) 创建 Group

BROWSE -> Groups -> CREATE NEW -> 输入 Group Name,如:ci_demo_leader, 点击 CREATE按钮创建;示例效果:

(2) 添加成员

BROWSE -> Groups -> ci_demo_leader -> Members -> Members 输入框中输入 Leader 账户名(系统将自动匹配到该账户信息,选中) -> 单击 Add 按钮。示例效果如下:

1.3.2.2 创建 Developer 组

(1) 创建 Group

BROWSE -> Groups -> CREATE NEW -> 输入 Group Name,如:ci_demo_dev, 点击 CREAE 按钮创建。

(2) 添加成员

BROWSE -> Groups -> ci_demo_dev-> Members -> Members 输入框中输入开发者账户名(系统将自动匹配到该账户信息,选中) -> 单击 Add 按钮。示例效果如下:

1.3.3 配置本项目可查看成员

项目管理员登录 Gerrit 后 -> BROWSE -> 下拉选择 Repositories -> IOT/xxx_CI/xxx_demo -> A -> EDIT,配置步骤示例:

单击 EDIT 按钮后显示 ADD REFERENCE 按钮,单击 ADD REFERENCE 按钮 -> 输入框中输入(或单击Reference 后面的修改图标,):refs/* -> Add Permission…, 选择 Read,单击权限下来列表后的 ADD 按钮添加 -> Add Group 输入框中分别输入:ci_demo_owner、ci_demo_leader、ci_demo_dev、Non-Interactive Users (系统根据输入将自动匹配) -> 单击 Exclusive 选项,前面单击页面配置部分顶部的的 SAVE 按钮保存更改。

后续配置 A 的操作均与此步相同,将不在描述具体操作步骤。配置步骤示例:

配置完成后示例效果(增加 Non-Interactive Users Group,截图需更新):

1.3.4 配置本项目所有成员可查看分支信息

针对本项目的 refs/heads/*,增加 Read 权限,配置后效果:

4.5.5 配置 Leader 创建分支权限​

针对本项目的 refs/heads/*,增加 Create Reference 权限,配置后效果:

1.3.6 配置 Leader 删除分支权限​

针对本项目的 refs/heads/*,增加 Delete Reference 权限,配置后效果:

删除分支时,首先单击分支后面的 DELETE 按钮,在弹出的窗口中单击 DELETE BRANCH 按钮(删除前请确认你确实需要删除该分支);操作示例:

1.3.7 配置自动/手工+1 权限如果需要自动+1(流程默认配置),需要将 Label Verified 赋予 Non-Interactive User Group(该组中只有 jenkins 一个用户, 该用户被运维管理员已经添加到该组中了);如果是手工+1,需要将 Label Verified 赋予 Leader 组。针对本项目的 refs/heads/*,增加 Label Verified 权限,配置后效果:

1.3.8 配置 Leader +2 权限​

针对本项目的 refs/heads/*,增加 Label Code-Review 权限,配置后效果:

1.3.9 配置 Leader Submit 权限

针对本项目的 refs/heads/*,增加 Submit 权限,配置后效果:

1.3.10 配置 Leader Fore Push 权限​

针对本项目的 refs/heads/*,增加 Push 权限,配置后效果:

1.3.11 配置指定用户对指定项目发起 Code Review​

针对本项目的 refs/for/refs/*,增加 Push、Push Merge Commit 权限,配置后效果:

1.3.12 配置项目成员访问 Gitweb 权限​

比如希望 ci_demo_leaderci_demo_dev 组内的开发者能正常访问 gitweb,即访问 Repository Browser 中的 gitweb 超链接:

链接点进去后效果:

1.3.13 配置项目管理员修改项目配置的权限​

针对本项目的 refs/meta/config,增加 Push 权限,配置后效果:

1.3.14 配置项目管理员和 Leader 打 Tag 权限​

针对本项目的 refs/tags/*,增加下面权限,配置后效果:

因为项目管理员在创建 ci_demo_leader 组时已经把自己加在该组中了,所以此处将权限分配给ci_demo_leader 组,项目管理员也拥有了这个权限。

1.4 提交项目初始结构至 Gerrit

Gerrit 中项目权限配置完成后,项目管理员需要把自己本地工作空间的项目初始结构提交至Gerrit 上创建的项目下,以供开发人员进行协同开发。具体操作步骤:

(1) Login into Gerrit as Project Owner: lishilong

(2) BROWSE -> Repositories -> 点击 IOT/PAAS_CI/ci_demo 项目 Repository Browser 的 git web 链接,进入 GitWeb 页面获取项目 clone 地址路径(注意是:SSH 协议的 URL);操作示例:

(3) Clone 项目到本地

git clone ssh://xxxxxxx/ci_demo.git

(4) 进入 Clone 到本地的项目路径 ci_demo 下,然后将准备好的项目初始结构复制到 ci_demo 目录下,根据本项目的需要修改.gitignore 文件;

(5) 执行提交操作

//当前目录下文件/目录纳入版本控制

git add .

//全局配置,当本地有多个项目时,只需配置一次

git config --global user.name "lishilong"

git config --global user.email lishilong@xxx.com

//提交推送到远程服务器

git commit -m 'Init Project’

git push -u origin master

至此 Gerrit 中项目配置部分完成,针对非 master 分支如需进行 Code Review,请参考 其他文档配置。

Gerrit码仓之分配权限使用方法秘籍相关推荐

  1. blob没权限 ie_vuerouter 源码和动态路由权限分配

    本文首发于政采云前端团队博客:浅析 vue-router 源码和动态路由权限分配https://www.zoo.team/article/vue-router-analysis 背景 上月立过一个 f ...

  2. vue-router 源码和动态路由权限分配

    本文首发于政采云前端团队博客:浅析 vue-router 源码和动态路由权限分配https://www.zoo.team/article/vue-router-analysis 背景 上月立过一个 f ...

  3. element label动态赋值_浅析 vuerouter 源码和动态路由权限分配

    背景 上月立过一个 flag,看完 vue-router 的源码,可到后面逐渐发现 vue-router 的源码并不是像很多总结的文章那么容易理解,阅读过你就会发现里面的很多地方都会有多层的函数调用关 ...

  4. xp共享文件权限分配设置的方法

    xp共享文件权限分配设置的方法 环境:XP系统 用户管理员是administrator 要求:xp共享文件 内网访问权限分配只读和完全控制两种访问方式 步骤: 1.安装完XP系统后,设定机器名(如:s ...

  5. 浅析 vue-router 源码和动态路由权限分配

    背景 上月立过一个 flag,看完 vue-router 的源码,可到后面逐渐发现 vue-router 的源码并不是像很多总结的文章那么容易理解,阅读过你就会发现里面的很多地方都会有多层的函数调用关 ...

  6. Android 12.0 第三方无源码apk授予QUERY_ALL_PACKAGES等其他权限的方法

    目录 1.概述 2.第三方无源码apk授予QUERY_ALL_PACKAGES等其他权限的方法的核心类

  7. ylmf3.0 分配修改登录root用户管理权限的方法

    ylmf OS 3.0 分配修改登陆root用户管理权限的方法 ylmf是由ubuntu系统改装而来的,她跟ubuntu一样有一个与众不同的特点,那就是初次使用时,你无法作为root 来登录系统,为什 ...

  8. ylmf OS 3.0 分配修改登陆root用户管理权限的方法

    ylmf OS 3.0 分配修改登陆root用户管理权限的方法 ylmf是由ubuntu系统改装而来的,她跟ubuntu一样有一个与众不同的特点,那就是初次使用时,你无法作为root 来登录系统,为什 ...

  9. oracle用户常用权限,Oracle用户权限分配的具体方法【常用财务软件使用教程】

    Oracle用户权限分配的具体方法 这里我们将介绍Oracle用户权限分配和Oracel从服务器导出数据的方法,希望能对大家有所帮助. 对于Oracle用户权限分配,很多人觉得不是很困难,但是要做好O ...

最新文章

  1. jsp,OGNL调用后台Action的某方法
  2. python中文昵称-python实例pyspark以及python中文显示
  3. ASP.NET杂谈-一切都从web.config说起(2)(ConfigSections详解-上 )
  4. html5新知识点,Html5基本知识点
  5. 【Apache】Apache ab压力测试工具Window下载和用法详解
  6. 米范 - 为新媒体和电商从业者提供的酷导航
  7. SRCNN 图像超分辨率重建(tf2)
  8. 哇塞!集齐7张卡片,真的可以召唤神龙耶!
  9. airtest获取手机分辨率,通过相对坐标定位元素
  10. HTTP之Referrer和Referrer-policy
  11. 高德地图各种摄像头图标_【高德地图上的摄像头资讯】高德地图上的摄像头足球知识与常识 - 足球百科 - 599比分...
  12. Vscode的相对路径读取问题及处理
  13. 【Unity】Unity打包后如何隐藏任务栏,窗口置顶,隐藏标题。
  14. 北师大应统考研432真题之抽样方法
  15. 淘宝爆款返场什么意思?淘宝爆款返场怎么报名?
  16. H3C防火墙的默认配置及console
  17. C++ QT QDBus基操
  18. 智能锁设计开发,解决方案
  19. 监控渗透测试中Certutil利用行为
  20. hhvm mysql_HHVM性能果然够强劲

热门文章

  1. 账号简介就是一篇凝练的文章,从5个方面教你写出优质突出的简介
  2. msvcp140_atomic_wait.dll文件丢失如何解决?
  3. python爬取国家男女比例_如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例?...
  4. java详解动态代理中的代理对象
  5. golang API json,struct结构中标签(Tag)的使用
  6. java项目开发-大神案例分享:京东京豆项目06
  7. Omap - SDK和工具链的安装&配置
  8. 劳易测光电传感器GS 61/6
  9. python打包成deepin程序_如何利用Python实现打包exe?
  10. Spring boot 连接MySQL,使用数据源hikaricp