gerrit安装指南(ubuntu环境)

搭建环境:Ubuntu 14.04

一、环境准备

1.Java环境

gerrit依赖,用于安装gerrit环境。

下载:jdk-7u79-linux-x64.tar.gz http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

安装:sudo tar zxvf ./jdk-7u79-linux-x64.tar.gz -C /opt

配置:vim ~/.bashrc(针对当前用户) or vim /etc/profile(针对所有用户,推荐)

export JAVA_HOME=/opt/jdk1.7.0_79
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

验证:java -version

java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

2.git环境

gerrit依赖,用来操作git repository。

安装:sudo apt-get install git

验证:git --version

git version 1.9.1

3.gerrit环境

下载:Gerrit 2.12.4 https://www.gerritcodereview.com/download/gerrit-2.12.4.war

4.apache2环境

安装:sudo apt-get install apache2 

验证:sudo /etc/init.d/apache2 start

5.gerrit管理帐号(可选,使用独立账号配置gerrit)

gerrit依赖,用来管理gerrit。

sudo adduser gerrit

sudo passwd gerrit

并将gerrit加入sudo权限

sudo visudo

gerrit  ALL=(ALL:ALL) ALL

二、安装与配置gerrit

1.配置gerrit

默认安装:java -jar gerrit-2.12.4.war init --batch -d ~/review_site

更新配置文件:sudo vim ~/gerrit/etc/gerrit.config

[gerrit]
        basePath = git
        canonicalWebUrl = http://47.104.226.72:8080/
[database]
        type = h2
        database = /home/sfshine/gerrit/db/ReviewDB
[index]
        type = LUCENE
[auth]
        type = HTTP
[receive]
        enableSignedPush = false
[sendemail]
        enable = true
[container]
        user = sfshine
        javaHome = /usr/lib/jvm/java-8-oracle/jre
[sshd]
        listenAddress = *:29418
[httpd]
        listenUrl = http://*:8080/
[cache]
        directory = cache
~                            
~/gerrit/bin/gerrit.sh start
Starting Gerrit Code Review: OK

 

 

在gerrit中,第一个登录的用户为管理员。添加一个用户 #然后输入密码信息。 牢记你输入的密码

htpasswd -c /data/gerrit/etc/htpasswd.conf root 

可以看到 Gerrit Server 成功启动了。此时通过浏览器,打开 http://47.104.226.72:8080 将可以看到如下这样的页面:

 

修改认证方式和反向代理

使用nginx配置方向代理, nginx 端口更改为8080, gerrit 端口更改为8080

[gerrit]
        basePath = git
        canonicalWebUrl = http://47.104.226.72:8080/
[database]
        type = h2
        database = /home/sfshine/gerrit/db/ReviewDB
[index]
        type = LUCENE
[auth]
        type = HTTP
[receive]
        enableSignedPush = false
[sendemail]
        enable = true
[container]
        user = sfshine
        javaHome = /usr/lib/jvm/java-8-oracle/jre
[sshd]
        listenAddress = *:29418
[httpd]
        listenUrl = http://*:8090/
[cache]
        directory = cache


修改之后,重启 Gerrit Server:

sudo sh ~/gerrit/bin/gerrit.sh restart

上面的修改将使 Gerrit Server 监听在 8090 端口上,同上,将认证方式修改为 HTTP。

Gerrit Server 强制要求使用反向代理,通过反向代理服务器提供的 Authorization 等 HTTP 头来获得用户认证信息。

接着配置 nginx。修改 nginx 的配置文件 /etc/nginx/nginx.conf,在它的 http 块中加入如下内容

   server {
  listen 8080;
  server_name review.virtcloudgame.com;
  location ^~ / {
           auth_basic "Restricted";
           auth_basic_user_file /home/gerrit/review_site/etc/passwd;
    proxy_pass        http://127.0.0.1:8090;
    proxy_set_header  X-Forwarded-For $remote_addr;
    proxy_set_header  Host $host;
  }
}


修改之后,让 nginx 重新加载配置文件:
auth_basic_user_file
 行用户配置用户名和密码文件的保存路径。proxy_pass 行用户设置 Gerrit Server 的地址。

sudo nginx -s reload


这样就可以直接通过 nginx 监听的 8080 端口访问 Gerrit Server 了。

2017-11-23 11-41-07屏幕截图.png

 

5.访问gerrit 管理界面 http://http://47.104.226.72:8080/

第一次访问,需要输入第3步设置的admin及密码,该账户将作为gerrit管理员账户。进入后可设置FullName: sfshine。

de07a2b3e708f59c95eba7ffe318b98a717.jpg

安装插件下载地址

https://gerrit-ci.gerritforge.com/job/Gerrit-buck-stable-2.12/

下载后放到~/gerrit/plugins中

 

三、如何使用gerrit

前提:需要git使用端 / gerrit服务端配合使用。

1.添加项目(gerrit 服务端)

1.1使用gerrit添加新项目:(适用于开启新项目并使用gerrit)

ssh -p 29418 gerrit1@192.168.199.112 gerrit create-project --empty-commit --name demo-project #建议采用管理界面添加

或者使用gerrit管理界面

1.2使用gerrit添加已有项目:(适用于已有项目下移植到gerrit中)

ssh -p 29418 gerrit1@192.168.199.112 gerrit create-project --name exist-project #建议采用管理界面添加

或者使用gerrit管理界面

然后将已有项目与gerrit上建立的exist-project关联,即将已有代码库代码push到gerrit中进行管理。

cd ~/gitcode/exist-project

git push ssh://gerrit1@192.168.199.112:29418/exist-project *:*

2.生成sshkey(git使用端)

在开发账户中生成sshkey,用作与gerrit服务器连接。

ssh-keygen -t rsa #生成sshkey

ls ~/.ssh/ #可查看sshkey

cat ~/.ssh/id_rsa.pub #查看sshkey

复制代码

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCj1XDqjNXbn39oeacJOxe8FklBJRpGS1CcHRThWBytZ4A5KXAaxYzcD94GUd9UxxZzKCr6y90mwuJ+jkKxCTlqUiwj73QIiPWQ3Re08M049W4XxdfGnu/jyTI9DptWBsF0dwFJlQquUtitS+b1Tkz7Jr7+WipbZ22aiHwRvY4VcvCCdIHy/BnCCbVcfgk9u8f+X+ROm+DkOGfUcBNXWEJydqF0wy/D13Q5gp9OAXMIOD05T3GToJRwYtx2cVFmK4jE9HtcudOrrZNFVHqeblbA7EMKpIuDpLho7esmpwJ/woB1wnKTwHoUzbMt0a6hHPMNWyP2WIJebEA1KzThLixt gerrit@RylanYan-ThinkPad

 

3.添加sshkey到gerrit服务器(gerrit 服务端)

此步骤与git流程类似,即将id_rsa.pub内容上传到git repository,gerrit中帮我们管理git repository.

 

4.拉取代码&配置git hooks(git client端)

验证sshkey是否配置成功:ssh gerrit1@192.168.199.112 -p 29418

复制代码

The authenticity of host '[192.168.199.112]:29418 ([127.0.0.1]:29418)' can't be established.
  RSA key fingerprint is db:07:3d:c2:94:25:b5:8d:ac:bc:b5:9e:2f:95:5f:4a.
  Are you sure you want to continue connecting (yes/no)? yes
  Warning: Permanently added '[192.168.199.112]:29418' (RSA) to the list of known hosts.

  ****    Welcome to Gerrit Code Review    ****

  Hi user, you have successfully connected over SSH.

  Unfortunately, interactive shells are disabled.
  To clone a hosted Git repository, use:

  git clone ssh://gerrit1@192.168.199.112:29418/REPOSITORY_NAME.git

复制代码

拉取代码: git clone ssh://gerrit1@192.168.199.112:29418/demo-project

更新githooks:gitdir=$(git rev-parse --git-dir); scp -p -P 29418 gerrit1@192.168.199.112:hooks/commit-msg ${gitdir}/hooks/

该过程用来在commit-msg中加入change-id,gerrit流程必备。

修改代码并提交,推送时与原有git流程不一致,采用 git push origin HEAD:refs/for/master 。

复制代码

git push origin HEAD:refs/for/master
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 381 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Processing changes: new: 1, refs: 1, done    
remote: 
remote: New Changes:
remote:   http://localhost:8081/4 Append date to testfile
remote: 
To ssh://gerrit1@localhost:29418/demo-project
 * [new branch]      HEAD -> refs/for/master

复制代码

 

五.使用gerrit website完成code review

当完成push后,可在gerrit管理界面看到当前提交code review的change。

查看需要code review的提交:

查看某次提交的详细信息(审核者+2可通过本次提交,提交者可通过Abandon本次提交):

如果审核者+2通过后,可提交该次commit.

六.gerrit注意事项

* 需要为每个使用者分配gerrit账号,不要都使用admin账号,因为admin账号可直接push master

* pull代码后需要配置githooks文件,以便在commit时自动生成change-id,否则无法push

* push代码时需要使用git push origin HEAD:refs/for/master(branch),gerrit默认关闭非admin账号的push direct权限

* push代码时需要commit email与gerrit account email一致,否则无法push成功,可选择关闭email notify,并开启forge user权限,或者通过修改gerrit数据库account email信息

* gerrit数据库与gitlab同步,需要安装replication插件,并开启该功能 参考:http://www.cnblogs.com/tesky0125/p/5973642.html

 

参考链接:

https://www.cnblogs.com/tesky0125/p/5877536.html

https://wolfcstech.com/2017/11/24/gerrit_codereview/

https://blog.csdn.net/yelllowcong/article/details/79979510

转载于:https://my.oschina.net/sfshine/blog/1814871

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值