前言
如果你打开 https://android.googlesource.com/platform/manifest,就会发现,google官方管理Android源码,使用的是Gerrit。Android系统源码是非常大的,用Git肯定是不适合。对于大型项目,得用Gerrit,今天就来介绍下Gerrit的安装和使用。
环境
- ubuntu20
- Gerrit 3.5.0
- nginx
- jdk11
安装
1.1 安装jdk11
# 更新系统软件包
sudo apt update
安装java11
sudo apt install -y openjdk-11-jdk
设置环境变量
# 编辑 .bashrc 或 .zshrc
nano ~/.bashrc # 或者 nano ~/.zshrc
# 添加以下环境变量
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
export USE_CCACHE=1
# 使环境变量生效
source ~/.bashrc # 或者 source ~/.zshrc
# 验证java
java --version
# 或
echo $JAVA_HOME
1.2 安装nginx
# 安装nginx
sudo apt install -y nginx
systemctl start nginx && systemctl enable nginx
1.3 安装Gerrit
我试过好几个版本,一开始下载的是Gerrit3.6.3,遇到各种问题,还要提前设置用户,下载apache2,后面放弃了,遇到了一些我没处理掉的问题,就改下载Gerrit3.5.0版本
mkdir gerrit
cd gerrit
# 下载gerrit
wget https://gerrit-releases.storage.googleapis.com/gerrit-3.5.0.war -O gerrit-3.5.0.war
# 关闭29418端口的进程
lsof -i:29418
kill -9 <pid>
export GERRIT_SITE=~/gerrit/gerrit_site
java -jar gerrit-3.5.0.war init -d $GERRIT_SITE --batch --install-all-plugins --dev
# 注意,这里一定要--install-all-plugins 否则会导致很多插件没能安装,很多功能就无法使用
使用java安装Gerrit的时候,一定要把一些插件安装好,不然会遇到各种问题,比如,看不到代码的下载入口,无法导入SSH keys等等,如果是重复安装,或者替换安装,需要先确保29418端口空闲。
1.4 修改配置
主要是修改两个配置,一个是ngix的,一个是Gerrit
进入到/etc/nginx/conf.d 中创建gerrit.conf
cd /etc/nginx/conf.d
# 新增conf
touch gerrit.conf
# 用管理员权限编辑配置
sudo nano gerrit.conf
新增内容如下(gerrit.conf)
upstream proxy_pool_gerrit {
server localhost:8080 weight=10;
keepalive 512;
}
server {
listen 80;
server_name 10.168.10.140;
location / {
auth_basic "Gerrit Code Review";
proxy_pass http://ipaddress:9092;
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_set_header X-Forwarded-Proto $scheme;
proxy_set_header Authorization $http_authorization;
}
}
- ipaddress: 改成服务器地址
- port: 端口最好换一下,不要使用默认的8080,有时会出错,莫名其妙
配置修改成功之后,最好验证下是否存在什么问题,并重启ngix
# 检查配置
sudo nginx -t
# 重启nginx
sudo systemctl restart nginx
# 检查nginx服务状态
sudo systemctl status nginx.service
# 查看Nginx运行日志
sudo journalctl -xe
进入~/gerrit/gerrit_site/etc/gerrit.config
[gerrit]
basePath = git
canonicalWebUrl = http://ipaddress:9092/
serverId = 57ec1452-f8f2-40e7-9512-7891cfffd2b5
[container]
javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"
javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"
user = gnlab
javaHome = /usr/lib/jvm/java-11-openjdk-amd64
[index]
type = lucene
[auth]
type = DEVELOPMENT_BECOME_ANY_ACCOUNT
userNameCaseInsensitive = true
[receive]
enableSignedPush = false
[sendemail]
smtpServer = localhost
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = http://*:9092/
[cache]
directory = cache
[plugins]
allowRemoteAdmin = true
- 同样ipaddress修改一下
1.5 启动Gerrit
进入到gerrit/gerrit_site/bin下,运行gerrit.sh restart命令
sudo ./bin/gerrit.sh restart
1.6 登录
直接通过ip访问,点击sign in 就能打开如下页面,可以通过admin进入
总结
遇到问题,别慌,一个个解决就好了,按上面流程来,基本没啥问天。