Gerrit做为Google用来管理Android代码版本的工具,是一种免费、开放源代码的代码审查软件,使用网页界面。本文主要介绍它的安装步骤。
$ mysql -u root -p
mysql> create database reviewdb;
Query OK, 1 row affected (0.01 sec)
mysql> CREATE USER 'gerrit'@'localhost' IDENTIFIED BY 'gerrit';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on reviewdb.* to gerrit@localhost identified by 'gerrit';
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| reviewdb |
| sys |
+--------------------+
8 rows in set (0.01 sec)
sudo adduser gerrit
sudo passwd gerrit
`并将gerrit加入sudo权限`
sudo visudo
gerrit ALL=(ALL:ALL) ALL
$ mkdir gerrit
$ chown -R gerrit.gerrit gerrit
在gerrit账号下进行配置安装
# su - gerrit
# java -jar gerrit-2.14.6.war init -d ../gerrit
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore
[2018-02-27 15:52:45,848] [main] INFO com.google.gerrit.server.config.GerritServerConfigProvider : No /www/download/../gerrit/etc/gerrit.config; assuming defaults
*** Gerrit Code Review 2.14.6
***
Create '/www/download/../gerrit' [Y/n]? y
*** Git Repositories
***
Location of Git repositories [git]:
*** SQL Database
***
Database server type [h2]: mysql
Gerrit Code Review is not shipped with MySQL Connector/J 5.1.41
** This library is required for your configuration. **
Download and install it now [Y/n]? y
Downloading https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.41/mysql-connector-java-5.1.41.jar ... OK
Checksum mysql-connector-java-5.1.41.jar OK
Server hostname [localhost]:
Server port [(mysql default)]:
Database name [reviewdb]:
Database username [root]: gerrit
gerrit's password :
confirm password :
*** Index
***
Type [lucene/?]:
*** User Authentication
***
Authentication method [openid/?]: http
Get username from custom HTTP header [y/N]? y
Username HTTP header [SM_USER]:
SSO logout URL :
Enable signed push support [y/N]? n
*** Review Labels
***
Install Verified label [y/N]? y
*** Email Delivery
***
SMTP server hostname [localhost]:
SMTP server port [(default)]:
SMTP encryption [none/?]:
SMTP username :
*** Container Process
***
Run as [root]:
Java runtime [/usr/lib/java/jdk1.8.0_162/jre]:
Copy gerrit-2.14.6.war to ../gerrit/bin/gerrit.war [Y/n]? y
Copying gerrit-2.14.6.war to ../gerrit/bin/gerrit.war
*** SSH Daemon
***
Listen on address [*]:
Listen on port [29418]:
Generating SSH host key ... rsa... dsa... ed25519... ecdsa 256... ecdsa 384... ecdsa 521... done
*** HTTP Daemon
***
Behind reverse proxy [y/N]? y
Proxy uses SSL (https://) [y/N]? n
Subdirectory on proxy server [/]:
Listen on address [*]:
Listen on port [8081]:
Canonical URL [http://UbuntuHost/]: http://git.xxxx.com
*** Cache
***
*** Plugins
***
Installing plugins.
Install plugin commit-message-length-validator version v2.14.6 [y/N]? y
Installed commit-message-length-validator v2.14.6
Install plugin download-commands version v2.14.6 [y/N]? y
Installed download-commands v2.14.6
Install plugin hooks version v2.14.6 [y/N]? y
Installed hooks v2.14.6
Install plugin replication version v2.14.6 [y/N]? y
Installed replication v2.14.6
Install plugin reviewnotes version v2.14.6 [y/N]? y
Installed reviewnotes v2.14.6
Install plugin singleusergroup version v2.14.6 [y/N]? y
Installed singleusergroup v2.14.6
Initializing plugins.
......
Initialized /www/gerrit
Executing /www/download/../gerrit/bin/gerrit.sh start
Starting Gerrit Code Review: OK
Waiting for server on localhost:8081 ... OK
完成后配置文件如下:
[gerrit]
basePath = git
serverId = 6331fedb-dc40-46a0-a4ab-de09ee155b9f
canonicalWebUrl = http://git.xxxx.com
[database]
type = mysql
hostname = localhost
database = reviewdb
username = gerrit
[index]
type = LUCENE
[auth]
type = HTTP
[receive]
enableSignedPush = false
[sendemail]
smtpServer = localhost
[container]
user = gerrit
javaHome = /usr/lib/java/jdk1.8.0_162/jre
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = proxy-http://*:8081/
[cache]
directory = cache
创建Gerrit管理员帐号:
# htpasswd -c /www/gerrit/gerrit.password admin
New password:
如果没有htpasswd这个工具,按提示安装即可。第一个帐号默认为管理员帐号。
在nginx配置文件中加入反向代理的配置文件:include reverse-proxy.conf;
reverse-proxy.conf文件如下:
server
{
listen 80;
server_name git.xxxx.com;
auth_basic "Welcomme to Gerrit Code Review Site!";
auth_basic_user_file /www/gerrit/gerrit.password;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8081;
}
access_log logs/gerrit_access.log;
}
给Nginx访问Gerrit的权限
setfacl -m g:nginx:rx ../gerrit
重启Nginx
完成之后,我们可以在浏览器中输入Nginx代理Gerrit的网址,看看是不是可以弹出输入用户名和密码的对话框(如果没有,请检查你的Nginx配置);然后输入正确的用户名(我们创建的密码文件用户是admin)和密码,如果你能登录到这个页面,就表示你的gerrit已经成功配置好了!
如果你已经成功登录了gerrit的网页,那么如果你想退出,请直接关闭整个浏览器,gerrit没有做logout的session清除,所以如果你直接点击网页右上角的logout,仍会返回到gerrit配置canonicalWebUrl的地址 。关于登出,gerrit给出的原因是:
You are using HTTP Basic authentication. There is no way to tell abrowser to quit sending basic authentication credentials, to logout with basicauthentication is to close the Webbrowser.
NOTE:使用OpenID的authentication方式应该不会有这个问题。
如果你的安装过程出错了,或者觉得安装的不够好,比如文件位置什么的,你可以重新安装。
如果你的gerrit服务已经处于运行中,需要先执行下面的命令把它停掉:
# gerrit/bin/gerrit.sh stop
删除reviewdb数据库中的内容,确保重新安装没有问题。
然后再试着删除整个 gerrit 文件目录就好了。
https://www.tuicool.com/articles/iAFBvu7