gerrit的使用指南

作者: 一只胖胖胖胖猿 | 来源:发表于2018-12-27 10:21 被阅读1次

    前言

    上一篇讲了如何搭建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的权限。关于权限审核代码,后面会提到。

    projectList.png
    所以在配置Watched Projects菜单中,就是当前用户要监听的项目,当这些项目发生变化的时候,如果配置了邮箱,就会收到邮件提醒,如果没有设置邮箱点击My-Watched Changes。就可以查看到哪些项目发生了什么变化。
    MyChanged.png
    如果选择了ALL-Projects,那么就意味着你要监听所有的工程,因为所有的工程都会默认继承自ALL-Projects.
    WatchedProjects.png
    Contact Information
    这里配置当前账号的信息,基本不使用,但是需要通过我上一篇提到的通过管理员主机远程ssh设置账号信息的方式,将当前账号的邮箱注册上。
    SSH Public Keys

    如果以前使用过git,那么就直接把公钥拷贝过来添加到下面框里就OK了。

    SSH Public Keys.png
    如果没有使用过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按钮来修改这个项目的权限

    image.png
    注意:在添加Read权限的时候,当前项目开发人员的分组加上,不然开发人员无法clone项目。
    普通用户clone工程

    普通用户登陆到gerrit管理系统,点击Projects->List进入到项目列表,点击对应工程的gitweb跳转至gitweb管理页面,

    image.png
    跳转成功之后,就可以找到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/进行学习的。博主写的非常详尽。

    相关文章

      网友评论

        本文标题:gerrit的使用指南

        本文链接:https://www.haomeiwen.com/subject/qiuflqtx.html