前言
上一篇讲了如何搭建gerrit服务器,今天给大家分享一下,初次使用这个系统的一些步骤。
管理员配置
在浏览器中输入gerrit服务器的地址之后,浏览器会弹出一个输入用户名和密码的框,我们输入已经注册好的管理员账号。
Profile
Profile.png
第一次登陆的时候,Full Name和Email Address 字段都是空的,后面可以手动设置。
Preferences
Preferences.png
Preferences设置页面主要是用于配置gerrit的web页面,这个页面如果公司内网发送邮箱不方便的话,可以不用开启Email Notification功能,只需要把Show Change Number In Changes Tables打上勾,这样能清楚地看到每个审核的编号。
Watched Projects
在配置Watched Prejects的时候,我们要先说一个gerrit的两个默认项目:
我们点击左上方的菜单栏Projects->List,就能看到gerrit仓库里面所有的项目,排在最前的两个默认项目All-Projects和 All-Users,这两个工程是两个基础的工程,我们后期新建的所有项目默认都是继承自ALL-Projects的权限。关于权限审核代码,后面会提到。
所以在配置Watched Projects菜单中,就是当前用户要监听的项目,当这些项目发生变化的时候,如果配置了邮箱,就会收到邮件提醒,如果没有设置邮箱点击My-Watched Changes。就可以查看到哪些项目发生了什么变化。
MyChanged.png
如果选择了ALL-Projects,那么就意味着你要监听所有的工程,因为所有的工程都会默认继承自ALL-Projects.
WatchedProjects.png
Contact Information
这里配置当前账号的信息,基本不使用,但是需要通过我上一篇提到的通过管理员主机远程ssh设置账号信息的方式,将当前账号的邮箱注册上。
SSH Public Keys
如果以前使用过git,那么就直接把公钥拷贝过来添加到下面框里就OK了。
如果没有使用过git,那么在命令行输入:
$ ssh -keygen -t -C rsa
然后一路回车,默认不加密码。
最后,设置你Git的邮箱和名字
$ git config --global [user.name] yourname
$ git config --global user.email youremail
注意:这里设置的账号邮箱要和gerrit账号的邮箱一致,否则会出问题。
配置完公钥之后,我们需要在./ssh目录下面,拷贝id_rsa.pub里面的全部内容,然后复制到上面的框里面就OK了。
Groups
最后来看一下gerrit的分组,图片里面是gerrit默认的几个分组,我们需要知道的是Administrator就是管理员分组,Anonymous Users指的是所有添加到gerrit数据库中的成员都默认加入的一个组。之后我们还可以建立新的分组,加入新的成员等等。
Groups.png
实战
配置管理员ssh
前面配置了管理员的相关账号,下面我们将用这个管理员进行从项目创建->修改->提交gerrit->审核的流程进行演示。我们会用到admin和jony两个账号进行示例
为了能够方便的远程连接ssh主机,我们修改~/.ssh/目录下面的config文件,
sudo vim ~/.ssh/config
添加连接gerrit服务器的配置,如下:
Host gerrit
HostName "10.180.166.84" //这里是gerrit服务器的地址
User "admin" //这里要和gerrit服务器上的账号名字一样
IndentityFile "~/.ssh/id_rsa"
port 29418 //默认端口号,不要改变
添加普通成员
首先需要普通成员在他的电脑上面生成和获取到git的公钥,具体的方法和上面管理员一样。
然后,管理员在其电脑上面添加普通管理员的账户
sudo htpasswd -b ~/review_site/passwords test 123123 //创建帐号
sudo gerrit gerrit set-acount --add-email youremail@邮箱 test //设置test普通用户的邮箱
这样,普通用户再去登陆网站,添加自己的公钥就可以使用了。
修改用户所在的组
在gerrit中,可以将用户分配到不同的组,给不同的组设置权限。
People.png
管理员可以点击ListGroup查看所有的分组或者点击Create New Group新建一个分组。其中Anonymous Users这个分组没有显示出来,因为它是隐藏的,所有的用户注册之后都会自动添加到这个分组中。
当我们选择创建了分组之后,就可以添加普通成员到这个分组里面。
Group.png
新建和修改项目
点击Peojects,然后Create New Project,创建一个名为mate的项目,点击项目名称,进入到项目的详情页,点击Projects->Access进行项目的权限设置。
Reference.png
我们可以看到这个项目已经有了个默认的继承自All-Projects的权限,关于默认的权限这里不做多的介绍,想要深入学习的同学可以点击进去看一下。
修改权限的时候慎重,不要直接修改All-Projects组的权限,因为这个是所有项目的依赖权限组,修改了以后,所有的项目权限都会跟着发生变化
我们点击Edit按钮来修改这个项目的权限
注意:在添加Read权限的时候,当前项目开发人员的分组加上,不然开发人员无法clone项目。
普通用户clone工程
普通用户登陆到gerrit管理系统,点击Projects->List进入到项目列表,点击对应工程的gitweb跳转至gitweb管理页面,
跳转成功之后,就可以找到clone工程的URL。
image.png
复制这个地址,在命令行里面输入。
scp -p -P 29418 jony@10.180.166.84:hooks/commit-msg ~/.git/hooks/
等项目clone下来之后,cd进工程目录,输入下面命令查看hook是否存在
ls -l .git
输出下面的目录
image.png
注意:hook这个文件夹是只有通过ssh命令clone下来才会有,如果通过http的话,这个文件就需要手动创建
然后输入下载hook的命令
scp -p -P 29418 jony@10.180.166.84:hooks/commit-msg .git/hooks/
然后,我们新建一个文件,提交到gerrit服务器。提交成功的分支是gerit的分支:refs/for/master。
demo JonyZ$ touch test
demo JonyZ$ git add .
demo JonyZ$ git commit -m 'test'
[master f7cdb9a92] test
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test
demo JonyZ$ git branch
* master
demo JonyZ$ git push origin HEAD:refs/for/master
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 288 bytes | 288.00 KiB/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1)
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: New Changes:
remote: http://10.180.166.84:8081/c/Mate/+/84 test
To ssh://10.180.166.84:29418/Mate.git
注意:因为我们使用了gerrit的管理系统,所以我们不能直接push到master仓库分支上,而是应该提交到refs/for/master分支上面。这样,gerrit就能收到修改的通知。
管理员审核
通过前面普通用户提交修改到gerrit服务器之后,管理员通过邮件或者手动单击All->open查看需要审核的项目。通过点击修改项,进入修改详情查看
image.png
点击进入修改详情之后,我们可以看到Changed-ID和修改的文件,然后可以点击进入查看修改的具体详情。
image.png
- 点击Reply表示对这次事件的回应,回应可以有5个选项,表示当前审查人员对这个事件的打分:-2,-1,0,+1,+2, +2表示直接同意,1表示我同意了,需要别的人员来一起审核
-
Code-Review+2 相当于直接打+2分
点击Reviewers旁边的按钮,可以增加审核人员。reply之后,如果分数够了2分,就可以直接submit到主线上去了
合并之后,可以在My->Changes中查看我们的审核历史
image.png
到这里,一个完整的从普通项目成员提交,到代码审核人员检查的全过程,就结束了。
特别感谢
关于gerrit的使用,参考这篇博客http://lipeng1667.github.io/2017/01/18/gerrit-guide/进行学习的。博主写的非常详尽。
网友评论