2、Gerrit配置--用户配置

简介:

前面一章已经搭建好了Gerrit服务器,下面介绍如何创建Gerrit用户,并使用用户登录已经改配用户设定


环境:

Gerrit Server:172.16.206.133 

Client:172.16.206.129


1、在Gerrit服务器上创建用户

Gerrit服务器使用的是HTTP认证类型,并用httpd做反向代理,创建用户使用以下命令

#cd  /home/gerrit2/gerrit/etc

[root@localhost etc]# htpasswd -m passwords user2

New password: 

Re-type new password: 

Adding password for user user2

根据提示输入密码即可(密码设置为123456),这样账号就创建好了。创建完成,httpd和gerrit服务不需要重启。


2、登录gerrit用户

用创建的user2账号访问gerrit,在浏览器地址栏输入:

http://172.16.206.133:8080

输入登录的账号密码,账号为user2,密码为123456

wKioL1cxh72j3sxnAAH_7PqFtdg542.png


3、修改gerrit用户配置

登录后,在网页右上角点击自己的用户名,在点击“settings”。

wKioL1cxT6yh3itBAABV-Z3w2RA103.png

wKiom1cxTvyDOGa1AAIQnIKspGE990.pngsettings中就是用户的配置相关信息,需要注册邮箱和提交服务器上的公钥

1、提交公钥

注意:为什么要提交公钥文件到gerrit服务器?如果不提交公钥,则不能使用git push命令将本地代码提交到gerrit服务器。公钥是一个认证方式。

在客户端172.16.206.129这台服务器上创建公、私钥对,具体命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[user2@host2 root]$  ssh -keygen -t rsa 
Generating public /private  rsa key pair.
Enter  file  in  which  to save the key ( /home/user2/ . ssh /id_rsa ): 
Created directory  '/home/user2/.ssh' .
Enter passphrase (empty  for  no passphrase): 
Enter same passphrase again: 
Your identification has been saved  in  /home/user2/ . ssh /id_rsa .
Your public key has been saved  in  /home/user2/ . ssh /id_rsa .pub.
The key fingerprint is:
fd:da:fa:c5:ec:6c:82:60:1f:39:15: bc :62:ec:51:15 user2@host2
The key's randomart image is:
+--[ RSA 2048]----+
|           . .E. |
|            +    |
|         . . o   |
|         .= o    |
|        So.=     |
|        o =. o   |
|       . o +. +  |
|          oo.+.  |
|          ooooo  |
+-----------------+

生成的密钥文件如下:

[user2@host2 ~]$ ls .ssh/

id_rsa  id_rsa.pub

id_rsa.pub为公钥文件,将该文件中的内容,复制并粘贴到settings==>SSH Public Keys中,并点击Add

wKioL1cxUgfDFUVqAAGq3q-4bWk295.png

测试SSH key是否提交成功,在client 172.16.206.129服务器上执行以下命令:

#ssh -p 29418  user2@172.16.206.133

29418为gerrit上SSH服务器监听的端口,user2为登录的gerrit账号,注意这里我们使用哪个账号登录gerrit就使用哪个账号测试,并且该账号已经登录了gerrit服务器,而且公钥已经上传。172.16.206.133为gerrit服务器的IP

1
2
3
4
5
6
7
8
9
10
11
[user2@host2 . ssh ]$  ssh  -p 29418 user2@172.16.206.133
The authenticity of host  '[172.16.206.133]:29418 ([172.16.206.133]:29418)'  can't be established.
RSA key fingerprint is 93:d3:47:c2:15:32:f0:41:d9:e6:7f:88:66:01:f3:9b.
Are you sure you want to  continue  connecting ( yes /no )?  yes
Warning: Permanently added  '[172.16.206.133]:29418'  (RSA) to the list of known hosts.
   ****    Welcome to Gerrit Code Review    ****
   Hi user2, you have successfully connected over SSH.
   Unfortunately, interactive shells are disabled.
   To clone a hosted Git repository, use:
   git clone  ssh : //user2 @172.16.206.133:29418 /REPOSITORY_NAME .git
Connection to 172.16.206.133 closed.

可以看到连接成功,说明SSH Public Key上传成功。


为user2注册邮箱

wKiom1cxU7GAHRFDAAGEtbEIY_0461.png

点击Register后,登录你刚才注册的邮箱,激活即可。



4、创建用户组并创建一个项目

注意,只有管理员组的用户才能创建group和Project

登录Gerrit管理员账号admin,创建一个新的组为group2。并将user2账号加入该组

wKioL1cxVyeQLKvEAAC6XxXWCvc918.png

wKioL1cxVyiieK8VAAGaaMumo9Q911.png


新建一个Project,名为Project2

wKioL1cxWsKynVNDAAICK7gAolU605.png

wKioL1cxWsWjwjEwAAMaT5CjD8I516.png


5、gerrit代码审核流程

前面都是准备工作,接下来演示gerrit如何做代码审核的

a、client server( 172.16.206.129)的git初始配置

配置用户名和邮箱

#git config --global user.name "user2"

#git config --global user.email "YOUR EMAIL-ADDRESS"


b、用账户user2登录gerrit 

在Projects==> List中找到Projects2,然后点击Clone with commit-msg hook, 在点击ssh按钮,

复制ssh下面项目地址:

1
git clone  ssh : //user2 @172.16.206.133:29418 /Project2  &&  scp  -p -P 29418 user2@172.16.206.133:hooks /commit-msg  Project2/.git /hooks/

直接将刚才复制的命令,在client server的命令行运行

1
git clone  ssh : //user2 @172.16.206.133:29418 /Project2  &&  scp  -p -P 29418 user2@172.16.206.133:hooks /commit-msg  Project2/.git /hooks/


注意:步骤b一定选Clone with commit-msg hook下面的地址来clone,否则在客户端使用git push

命令提交代码时会报错。如果不需要向gerrit服务器提交代码,那么你只需使用

git clone ssh://user2@172.16.206.133:29418/Project2

或者git clone http://user2@172.16.206.133:8081/a/Project2



c、创建一个文件,并提交到gerrit服务器端

1
2
3
4
[user2@host2 Project2]$ vim  test .sh 
aaaaaaaaaaaaa
bbbbbbbbbbbbb
ccccccccccccc

用git add 和git commit命令将文件保存到git仓库中

1
2
3
4
5
[user2@host2 Project2]$ git add  test .sh 
[user2@host2 Project2]$ git commit -m  "创建了test.sh文件"
[master 16462e9] 创建了 test .sh文件
  1 files changed, 3 insertions(+), 0 deletions(-)
  create mode 100644  test .sh


d、用git push命令将代码从本地传到gerrit服务器对象项目下的master分支

1
2
3
4
5
6
7
8
9
10
11
12
[user2@host2 Project2]$ git push origin master:refs /for/master
Counting objects: 4,  done .
Compressing objects: 100% (2 /2 ),  done .
Writing objects: 100% (3 /3 ), 341 bytes,  done .
Total 3 (delta 0), reused 0 (delta 0)
remote: Processing changes: new: 1, refs: 1,  done    
remote: 
remote: New Changes:
remote:   http: //172 .16.206.133:8081 /5  创建了 test .sh文件
remote: 
To  ssh : //admin @172.16.206.133:29418 /Project2
  * [new branch]      master -> refs /for/master

origin:远程仓库的名称,用git remote 可以查看所有的远程仓库名称

1
2
[user2@host2 Project2]$ git remote 
origin
1
master:refs /for/master  表示将代码从本地的master分支传到远端的master分支,固定格式就是这样


e、用user2账号登录Gerrit Web UI,邀请管理员admin来做code review。

注意:之前忘记截图了,所以下图不是原图,但是基本上都一样,只有Owner和Project不对而已。

Add:添加指定用户来进行Code Review

Cherry Pick:切换分支,当执行push操作之后如果发现分支不对,需要切换,可以在这里点击Cherry Pick按钮进行分支切换操作。

Abandon:撤销push操作,当push之后,如果发现代码有问题,需要修改,可以点击这个按钮,然后修改代码,修改完成后,再次push,然后登陆Gerrit Web UI,会有一个Restore按钮,这时候点击Restore,就可以重新申请Code Review。

RebaseFollow-Up没有找到相关资料wKioL1c6xyeAx7QTAAEVKOf0oBY681.png






e、看看Gerrit服务器上是否有code review的信息

登录gerrit管理员账号admin,在ALL下面点击“Open”,看到“创建了test.sh”这条记录。

这里“创建了test.sh文件”就是git commit -m "创建了test.sh文件" 这条命令产生的

wKioL1cxd0KC9IBEAAJt4--8EoI491.png

点开这条记录,看到以下信息


wKioL1cxd0biNku7AARvdB2TlY4241.png


我们可以点开test.sh文件看到里面的内容

wKioL1cxeGuDJUuNAAEkJvYYuEs066.png


还可以看到提交者的信息:

wKioL1cxeRrASYpkAAEtZeZW_es670.png

这里显示的用户名和邮箱地址其实是在client server上初始化git时,用以下命令配置的

#git config --global user.name "user2"

#git config --global user.email "YOUR EMAIL-ADDRESS"


点击上上图中的code review和replay进行代码审核

wKiom1cxebSB85xGAAEUOX7Xn3A497.png-2 表示不通过,+2表示代码ok可以通过审核,目前还没有深究这个,我理解的就是这样子的。

审核后可以看到审核的日志

wKioL1cxe1iyH_XTAAEcFP-mH0E976.png


以上就是gerrit代码审核的流程,gerrit仓库是纯粹的代码仓库,不存在work tree这个说法。所以在gerrit仓库里面执行git命令都会报错:

1
2
[root@localhost Project2.git] # git status
fatal: This operation must be run  in  a work tree

但是,如果用git clone将gerrit仓库里面的项目clone下来后,就自动变成了一个git仓库。


PS:本人是运维新手,很多东西还没有来得及深入学习了解,如果文章有错误的地方请见谅。










本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1771762,如需转载请自行联系原作者
目录
相关文章
|
Ubuntu 关系型数据库 网络安全
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能
1462 1
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能
|
数据安全/隐私保护
ovirt如何使用命令行管理用户和用户组
ovirt如何使用命令行管理用户和用户组
299 0
|
数据安全/隐私保护
【SVN】关于SVN创建多个版本库共用权限和密码并且设置钩子同步web目录
【SVN】关于SVN创建多个版本库共用权限和密码并且设置钩子同步web目录
158 0
【SVN】关于SVN创建多个版本库共用权限和密码并且设置钩子同步web目录
|
Java jenkins 持续交付
jenkins 完成 项目配置文件修改并远程发布包
jenkins 完成 项目配置文件修改并远程发布包
490 0
jenkins 完成 项目配置文件修改并远程发布包
|
Web App开发 Shell
CLI使用案例5: 在配置文件中简单配置多个账户
这里介绍一种通过配置文件,简单的配置多个账户的方式。
1676 0
|
数据安全/隐私保护
Confluence 6 从 Crowd 或 JIRA 应用中切换回使用内部用户管理
如果你的 Confluence 站点当前使用的是 Crowd 或者 Jira 应用程序管理你的用的话,你可以按照下面的步骤切换使用回内部目录管理你的用户。
1094 0
|
jenkins 持续交付
修改jenkins启动的默认用户
# 背景 通过yum命令安装的jenkins,通过service jenkins去启动jenkins的话,默认的用户是jenkins,但jenkins这个用户是无法通过su切换过去的 ,在某些环节可能产生问题,期望修改默认启动用户 # 过程 1.
1762 0
|
网络安全 Apache 开发工具