准备
java安装
切root账号: su root
gerrit账号 创建并使用:
sudo adduser gerrit
–配置sudo 在root用户下 输入 visudo,并在# User privilege specification 下面添加 :
gerrit ALL=(ALL:ALL) ALL
Ctrl + O :保存文件,再按 Enter键 确认并退出
sudo su gerrit
cd /home/gerrit
一、Gerrit安装
下载 最新版本 release version参考: Gerrit Releases site.
wget https://gerrit-releases.storage.googleapis.com/gerrit-3.10.1.war
安装:
java -jar gerrit-3.10.1.war init -d /home/gerrit
安装时初始参数:
auth方式输入 HTTP , 并使用反向代理;
url输入: http://172.29.50.78:8081 --本地wsl ip地址: 172.29.50.78
其他都默认,plugin插件都选y
配置用户:
htpasswd -c /home/gerrit/etc/gerrit.password admin # 创建第一个用户admin,同时会生成一个gerrit.password文件
htpasswd -m /home/gerrit/etc/gerrit.password user1 # 在gerrit.password增加用户用 -m
htpasswd 是apache密码生成工具,安装apache2:
sudo apt-get install apache2
启动gerrit
cd /home/gerrit/bin
./gerrit.sh start #启动
./gerrit.sh status #查看状态
./gerrit.sh stop #停止
./gerrit.sh restart #重启
此时登录 http://172.29.50.78:8081 会报错,因为没有配置反向代理
二、配置反向代理
可以用nginx 以及 apache ,以nginx为例
安装ngnix
sudo apt-get install nginx
设置nginx
sudo vi /etc/nginx/conf.d/gerrit.conf
server {
listen 81; # 代理监听81端口
server_name localhost;
allow all;
deny all;
auth_basic "Welcome to Gerrit Code Review Site!";
auth_basic_user_file /home/gerrit/etc/gerrit.password; # 代理使用 gerrit.password
location / {
proxy_pass http://172.29.50.78:8081; # 代理指向gerrit本地服务url,这个url要和gerrit.config中的canonicalWebUrl相同
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
}
ps: In common ‘proxy_pass’ should be localhost : http://127.0.0.1:8081
设置Gerrit
另外需要确保gerrit中etc目录的gerrit.config文件内容如下:
[gerrit]
basePath = git
canonicalWebUrl = http://172.29.50.78:8081
serverId = 224279c5-76ca-4018-8de1-b6dd546be4e6
[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 = gerrit
javaHome = /usr/lib/jvm/java-17-openjdk-amd64
[index]
type = lucene
[auth]
type = HTTP
[receive]
enableSignedPush = false
[sendemail]
smtpServer = localhost
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = proxy-http://172.29.50.78:8081/
[cache]
directory = cache
启动nginx:
sudo systemctl start nginx
sudo systemctl restart nginx
sudo systemctl status nginx
登录gerrit
浏览器打开 http://172.29.50.78:81/ ,即可输入用户名密码登录
三、Gerrit其他配置
配置SSH
git config --global user.name admin
ssh-keygen -t rsa -C “admin”
配置 config文件
Host 10.4.64.150 #修改成自己的gerrit服务器ip
HostName 10.4.64.150 #修改成自己的gerrit服务器ip
User admin #修改成自己的gerrit用户名
PubkeyAcceptedKeyTypes +ssh-rsa #保持不变
IdentityFile ~/.ssh/id_rsa #保持不变
Port 29418 #保持不变
C:\Users{username}.ssh文件夹下:
config
id_rsa
id_rsa.pub
存储private key,将pub key 配置在gerrit设置中。
配置用户邮箱:
– 需要admin账号配置完sshkey。
ssh 172.29.50.78 gerrit set-account admin --add-email admin@admin.com
配置用户权限:
选择 project(或选择parent project) , 选择 Access, 点击Edit,添加reference,
注意gerrit 有 refs/head/master 和 refs/for/master的区别,这里可以分别设置,也可以设置 refs/*
android 源码仓库:
https://android.googlesource.com/
如何将整套Android源码上传至gerrit
https://www.jianshu.com/p/9d62b1f0fb0f
如何用Gerrit管理你的Android代码? - Fenn的文章 - 知乎
https://zhuanlan.zhihu.com/p/561099921
安卓代码(repo管理)完整导入Gerrit服务器和Gerrit代码迁移备份
https://blog.csdn.net/ITerated/article/details/122730922
将安卓代码导入gerrit
https://blog.csdn.net/automan12138/article/details/80889708
烤鸭的gerrit使用总结
https://blog.csdn.net/benkaoya/article/details/8680886
搭建android源代码repo仓库
https://www.jb51.net/article/254278.htm
FAQ
登录后出现500 error,查看nginx日志发现错误:
sudo cat /var/log/nginx/error.log
"/home/gerrit/etc/gerrit.password" failed (13: Permission denied),
表明nginx对此文件没有权限。
最直接的办法是,修改nginx的运行权限为root
vi /etc/nginx/nginx.conf
#user www-data;
user root;
注: 这种方式不推荐生产环境使用