前言
如果你打開 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 = gitcanonicalWebUrl = 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 = gnlabjavaHome = /usr/lib/jvm/java-11-openjdk-amd64
[index]type = lucene
[auth]type = DEVELOPMENT_BECOME_ANY_ACCOUNTuserNameCaseInsensitive = 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進入
總結
遇到問題,別慌,一個個解決就好了,按上面流程來,基本沒啥問天。