#gerrit配置
Gerrit安装
Gerrit权限分配与群组创建
Gerrit代码下载和上库
Gerrit安装
1.环境准备
使用的ubuntu版本是22.04,gerrit的版本是gerrit-3.7.0.war
2,安装java-sdk —(数据库安装)
sudo apt-get install java-sdk 可以查看到当前支持的版本![在这里插入图片描述](https://img-blog.csdnimg.cn/d1df5769317d4e4fb7134dd897cf0f68.png
我自己安装的是sudo apt-get install openjdk-11-jdk 11.0.19+7us1-0ubuntu122.04.1
3,安装代理nginx
sudo apt-get install nginx
4,安装ssh 用于远程连接gerrit服务器
sudo apt-get install ssh
注意:由于OpenSSH8.8之后的ssh协议,不在默认支持rsa协议,需要修改下配置文件
vim /etc/ssh/sshd_config
在这个文件最后加上
HostKeyAlgorithms=+ssh-rsa,ssh-dss
KexAlgorithms=+diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
然后再重启ssh服务
systemctl restart sshd.service
5.安装gerrit
创建一个专门管理gerrt用户
su root 切换到root
adduser gerrit
按照提示输入密码
然后进入到这用户目录下
su gerrit
cd /home/gerrit
将安装包复制到这个路径下
如果是跨服务器的话,scp -v user@192.168.x.x:/home/user/gerrit-3.7.0.war ./
创建一个专门gerrit的安装目录
mkdir review_site
参考的安装步骤
zowee@machine:~$ java -jar gerrit-3.7.0.war init -d review_site/
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore
[2023-06-01 14:29:29,410] [main] INFO com.google.gerrit.server.config.GerritServerConfigProvider : No /home/zowee/review_site/etc/gerrit.config; assuming defaults
*** Gerrit Code Review 3.7.0
Create ‘/home/zowee/review_site’ [Y/n]? Y
*** Git Repositories
Location of Git repositories [git]: git
*** JGit Configuration
Auto-configured “receive.autogc = false” to disable auto-gc after git-receive-pack.
*** Index
Type [lucene]:
*** User Authentication
Authentication method [openid/?]: http
Get username from custom HTTP header [y/N]? N
SSO logout URL :
Enable signed push support [y/N]?
Use case insensitive usernames [Y/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 [zowee]:
Java runtime [/usr/lib/jvm/java-11-openjdk-amd64]:
Copy gerrit-3.7.0.war to review_site/bin/gerrit.war [Y/n]? Y
Copying gerrit-3.7.0.war to review_site/bin/gerrit.war
*** SSH Daemon
Listen on address [*]:
Listen on port [29418]:
Generating SSH host key … rsa… ed25519… ecdsa 256… ecdsa 384… ecdsa 521… done
*** HTTP Daemon
Behind reverse proxy [y/N]? y
Proxy uses SSL (https://) [y/N]?
Subdirectory on proxy server [/]:
Listen on address [*]:
Listen on port [8081]:
Canonical URL [http://machine/]:
*** Cache
*** Plugins
Installing plugins.
Install plugin codemirror-editor version v3.7.0 [y/N]? y
Installed codemirror-editor v3.7.0
Install plugin commit-message-length-validator version v3.7.0 [y/N]? y
Installed commit-message-length-validator v3.7.0
Install plugin delete-project version v3.7.0 [y/N]? y
Installed delete-project v3.7.0
Install plugin download-commands version v3.7.0 [y/N]? y
Installed download-commands v3.7.0
Install plugin gitiles version v3.7.0 [y/N]? y
Installed gitiles v3.7.0
Install plugin hooks version v3.7.0 [y/N]? y
Installed hooks v3.7.0
Install plugin plugin-manager version v3.7.0 [y/N]? y
Installed plugin-manager v3.7.0
Install plugin replication version v3.7.0 [y/N]? y
Installed replication v3.7.0
Install plugin reviewnotes version v3.7.0 [y/N]? y
Installed reviewnotes v3.7.0
Install plugin singleusergroup version v3.7.0 [y/N]? y
Installed singleusergroup v3.7.0
Install plugin webhooks version v3.7.0 [y/N]? y
Installed webhooks v3.7.0
Initializing plugins.
============================================================================
Welcome to the Gerrit community
Find more information on the homepage: https://www.gerritcodereview.com
Discuss Gerrit on the mailing list: https://groups.google.com/g/repo-discuss
Initialized /home/zowee/review_site
Init complete, reindexing accounts,changes,groups,projects with: reindex --site-path review_site --threads 1 --index accounts --index changes --index groups --index projects --disable-cache-statsReindexed 0 documents in accounts index in 0.0s (0.0/s)
Index accounts in version 12 is ready
Reindexing groups: 100% (2/2)
Reindexed 2 documents in groups index in 0.4s (4.7/s)
Index groups in version 9 is ready
Reindexing changes: Slicing projects: 100% (2/2), done
Reindexed 0 documents in changes index in 0.5s (0.0/s)
Index changes in version 79 is ready
Reindexing projects: 100% (2/2)
Reindexed 2 documents in projects index in 0.2s (11.4/s)
Index projects in version 5 is ready
Executing /home/zowee/review_site/bin/gerrit.sh start
** ERROR: Cannot find git in PATH
error: cannot start Gerrit: exit status 1
Waiting for server on machine:80 … OK
Opening http://machine/#/admin/projects/ …OK
创建gerrit用户,用于登录访问
先再/home/gerri/路径下创建一个存放账号密码的文件
touch gerrit.password
创建用户
sudo htpasswd -m gerrit.password userName
默认第一个用户就是超级用户(累加的方式)
sudo htpasswd -m gerrit.password admin
修改gerrit配置文档,需要修改位置 绿色标记
[gerrit]
basePath = git
canonicalWebUrl = http://10.26.1.105/
serverId = b4041bdf-e539-4b51-98a7-e0e2c51b8037
[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 = zowee
javaHome = /usr/lib/jvm/java-11-openjdk-amd64
[index]
type = lucene
[auth]
type = HTTP
userNameCaseInsensitive = true
[receive]
enableSignedPush = false
[sendemail]
smtpServer = localhost
[sshd]
listenAddress = :29418
[httpd]
listenUrl = proxy-http://:8081/
[cache]
directory = cache
修改nginx配置文档
cd /etc/nginx/conf.d
创建代理的配置文件 这里需要root权限
sudo touch gerrit.conf
修改内容
sudo vim gerrit.con.f
内容如下:标记位置对应修改即可
server {
listen *:85;
server_name 10.26.1.105;
allow all;
#deny all;
auth_basic “Welcomme to Gerrit Code Review Site!”;
auth_basic_user_file /home/gerrit/gerrit.password;
location /{
proxy_pass http://10.26.1.105:8081/;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
修改nginx访问权限
需要将nginx的默认用户修改为root,否则无法访问/home/gerrit目录下的gerrit.passwd
和修改记录
cd /etc/nginx/
sudo vim nginx.conf
第一行的默认用户修改为user root;
重启nginx服务
systemctl stop nginx
nginx
如果出现了端口没有被清除的报错,则需要关闭对应的进程,然后再拉起nginx进程
端口查询
lsof -i:端口
删除进程
kill -9 pid
启动gerrit
su gerrit
cd /home/gerrit/review_site/bin
拉起服务
./gerrit.service restart或
./gerrit.service start
如果gerrit或者nginx拉起失败,这两个路径下的出错日志,可以作为具体参考
/home/gerrit/review_site/logs/error_log
/var/log/nginx/error.log
验证登录
输入ip+端口号 nginx的监听端口
验证通过后,再登录gerrit监听端口
http://10.26.1.105:8081/
Gerrit权限分配与群组创建
创建gerrit一般用户
sudo htpasswd -m gerrit.password userName
创建用户后,需要网页上登录一次,初始化,保证后面添加用户的操作中能找到这个新用户
群组创建
登录admin关于账户
创建:这里可以按照具体的工作需求创建不同的分组
添加分组成员
进入分组:
选择成员
添加成员:(这里的新成员需要是登录过gerrit网页的)
创建分支(权限分配)
创建分支
初始化
生成下载连接
点击Access,进行权限分配
Gerrit代码下载和上库
gerrit的admin账户添加公钥key
由于需要通过admin账户给普通账号添邮箱,所以需要在gerrit服务端,gerrit账户下
su gerrit
cd /home/gerrit
添加sshkey
rsa协议和ed25519协议都可以试试
ssh-keygen -t ed25519 -C[你的邮箱] 全部回车
或者
ssh-keygen -t rsa -C [你的邮箱] 全部回车
将/home/gerrit/.ssh/id_ed25519.pub
或者/home/gerrit/.ssh/id_rsa.pub中的内容添加到
admin管理员账户给普通用户添加邮箱
在gerrit服务端,gerrit账户下
su gerrit
cd /home/gerrit
通过命令给普通用户添加邮箱
ssh -p 29418 admin@10.26.1.105 gerrit set-account --add-email liys2@aaaa.com.cn liys
gerrit的普通用户添加公钥key
在客户端linux下,切换为普通用户,进入用户目录下
添加git用户
git config --global user.name [你的用户名] eg:usr1(gerrit账户同名)
git config --global user.email [你的邮箱] 注意:真实邮箱 eg:1224@qq.com
生成ssh密钥
ssh-keygen -t rsa -C [你的邮箱] 全部回车
或者ssh-keygen -t ed25519 -C[你的邮箱] 全部回车
将/home/gerrit/.ssh/id_ed25519.pub
或者/home/gerrit/.ssh/id_rsa.pub中的内容添加到
gerrit这个用户的sshkey配置中(这里与admin账户添加的方法是一样的)
下拉代码
注意git配置的用户名必须与gerrit上用户名一致
上库代码:
下拉更新代码
git pull origin master
git add ./ 提交修改
git commit -m ‘上库信息’
将本地代码推送到gerrit服务器上
git push origin HEAD:refs/for/master
由于第一次上库,没有生成change-id,需要添加change-id生成脚本。
再次推送代码git push origin HEAD:refs/for/master
代码视验和推送到主分支
打开gerrit服务器ip,在changes选项下就会有自己上库的修改了
点击进入:完成verified code-review submit(+1,+2,推送) 及完成了上库
补充:
代码仓移植
git镜像迁移到gerrit
- 克隆原有的仓库
git clone --bare xxxxxx.git - 在gerrit上新建一个仓库,记住不能选择init empty commit
3.为新建的仓库,设置一些特殊权限
reference: refs/*
权限:create reference,Forge Author Identity,Forge Committer Identity,
Forge Server Identity,Push,Push Merge Commit,Push Annotated Tag
refs/for/refs/*
权限:Push Merge Commit
4. push 到新的库
在第一步clone的目录下面运行
git push --mirror xxxx新的仓库url.git