当前位置: 首页 > news >正文

gerrit的部署与配置关联到不同服务器上的git仓库

girrit部署安装使用并关联不同服务器的git仓库

  • 1. 安装

近期在部署gerrit的时候踩了不少坑,记录一下完整过程,避免以后哪天又忘了

1. 安装

官网下载gerrit安装包:https://www.gerritcodereview.com/#download
之后安装必须的jdk环境,注意,最新的gerrit安装包需要jdk21,很多教程还在推荐11
直接sudo apt install openjdk-按tab键选择21的版本安装
安装完之后执行sudo java -jar gerrit-3.12.2.war init -d ./gerrit
安装的时候除了下面几条按列出来的填写,其他的都默认就行:

Authentication method [openid/?]: httpRun as [root]: gerrit (这里最好和你计算机当前用户一致,否则容易又权限问题)Listen on port [8080]: 8095(这里的port改成你自己的Port就行)

插件安装全都选y

Installing plugins.
Install plugin codemirror-editor version v3.9.1 [y/N]? y
Installed codemirror-editor v3.9.1
Install plugin commit-message-length-validator version v3.9.1 [y/N]? y
Installed commit-message-length-validator v3.9.1
Install plugin delete-project version v3.9.1 [y/N]? y
Installed delete-project v3.9.1
Install plugin download-commands version v3.9.1 [y/N]? y
Installed download-commands v3.9.1
Install plugin gitiles version v3.9.1 [y/N]? y
Installed gitiles v3.9.1
Install plugin hooks version v3.9.1 [y/N]? y
Installed hooks v3.9.1
Install plugin plugin-manager version v3.9.1 [y/N]? y
Installed plugin-manager v3.9.1
Install plugin replication version v3.9.1 [y/N]? y
Installed replication v3.9.1
Install plugin reviewnotes version v3.9.1 [y/N]? y
Installed reviewnotes v3.9.1
Install plugin singleusergroup version v3.9.1 [y/N]? y
Installed singleusergroup v3.9.1
Install plugin webhooks version v3.9.1 [y/N]? y

安装完之后就会在本地的安装目录(我的是gerrit),看到安装生成的东西

接下来要调整gerrit配置
进入gerrit/etc目录,修改gerrit.config:

lzs@lzs-Precision-3591:~/gerrit$ cat etc/gerrit.config 
[gerrit]basePath = gitcanonicalWebUrl = http://lzs-Precision-3591:8099/serverId = b1e98aec-54b9-473f-8156-d5facb780e8b
[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 = lzsjavaHome = /usr/lib/jvm/java-21-openjdk-amd64
[index]type = lucene
[auth]type = HTTP
[receive]enableSignedPush = false
[sendemail]smtpServer = localhost
[sshd]listenAddress = *:29418
[httpd]listenUrl = http://*:8099/
[cache]directory = cache
[ssh]sshKeyPath = /home/lzs/.ssh/gerrit_rsa1

前面已经选的情况下,只需要配置

[ssh]sshKeyPath = /home/lzs/.ssh/gerrit_rsa1

用于后面同步gitlab仓库。

然后安装htpasswd
sudo apt-get install apache2-utils -y

nginx反向代理环境安装
sudo apt-get install nginx

配置nginx反向代理:
新建/etc/nginx/conf.d/gerrit.conf,增加以下内容:

server {listen *:86;server_name localhost;allow all;deny all;auth_basic "Welcomme to Gerrit Code Review Site!";auth_basic_user_file /home/server_software/gerrit/etc/gerrit.passwd;location / {proxy_pass http://lzs-Precision-3591:8099/;proxy_set_header X-Forwarded-For $remote_addr;proxy_set_header Host $host;}
}

创建gerrit.password文件,并创建用户

htpasswd -c /home/server_software/gerrit/etc/gerrit.passwd admin # 创建第一个用户admin,同时会生成一个gerrit.password文件

htpasswd -m /home/server_software/gerrit/etc/gerrit.passwd lyn # 在gerrit.password增加用户用 -m
这里创建的password文件要在nginx的gerrit.conf中路径匹配上nginx才能加载
重启nginx:systemctl restart nginx

到这里已经初步配置好本地的gerrit服务了。重启gerrit:./bin/gerrit.sh start (最好先stop)

这时就可以去浏览器登录了,注意,首次登录最好使用创建的第一个用户admin,否则可能出其他问题;

登录之前,我们可以将自己的git仓库的代码,clone到gerrit/git/目录下,注意这里clone必须加–bare参数:

git clone --bare ssh://git@106.53.*.*/root/wangzk-test.git

之后到gerrit网页上的browse下就能看到自己克隆的git仓库了。
在这里插入图片描述

之后配置ssh密钥:

ssh-keygen -t rsa -C “xxx.mail.com"

然后将公钥粘贴到gitlab和gerrit的配置中,gerrit的配置点击用户后可以看到有个ssh keys
在这里插入图片描述

这里需要注意,你的公钥保存地点需要当前gerrit运行的用户能访问到,如果访问不到就会有问题,比如我之前就是root运行的gerrit,但我生成密钥是在个人用户下生成的,导致replication插件找不到,代码同步会有问题。这种情况解决方案就是在gerrit运行的用户下生成密钥,并且配置~/.ssh/config,添加:

Host xxx.com(你的git服务地址)
HostName xxx.com(你的git服务地址)
Port 你的git服务端口
User git
IdentityFile /root/.ssh/gerrit_rsa1(密钥路径)
IdentitiesOnly yes

执行下面命令验证没问题即可

ssh -i /root/.ssh/gerrit_rsa1 -p 你的git服务端口 你的git服务地址
PTY allocation request failed on channel 0
Welcome to GitLab, @677365!
Connection to setp-gitlab.seres.cn closed.
root@lzs-Precision-3591:/home/lzs# ssh -p 你的git服务端口 你的git服务地址

之后配置etc/replication.config

[remote "仓库名"]rescheduleDelay = 15projects = 仓库名url = ssh://git@仓库地址push = +refs/heads/*:refs/heads/*push = +refs/tags/*:refs/tags/*push = +refs/changes/*:refs/changes/*fetch = +refs/heads/*:refs/heads/*fetch = +refs/tags/*:refs/tags/*fetch = +refs/changes/*:refs/changes/*threads = 3

保存之后重启,即可

测试时启动时用./bin/gerrit.sh run可以看到终端日志输出,另外注意gerrit目录下的权限,特别是logs和git目录,最好改成777。

验证:
以上配置完后,时用Gerrit 仓库里推荐的git clone命令拉取仓库,修改文件,然后提交并推送,这里还有一点,需要配置自动生成changeid,执行:

 f="$(git rev-parse --git-dir)/hooks/commit-msg"; curl -o "$f" http://lzs-Precision-3591:8099/tools/hooks/commit-msg ; chmod +x "$f"

即可,没配置推送的时候也会自动把命令给你报出来
推送的时候都要加HEAD:refs/for,如下:

git push origin HEAD:refs/for/d10_application_dev_lzs

其他事项:
gerrit默认只会同步本地到git,git的更新,分支的变更,如何同步到gerrit呢?
这个问题,就需要通过git的webhooks来解决了,变更触发调用更新本地仓库的操作

http://www.dtcms.com/a/508928.html

相关文章:

  • Nginx静态网站:从原理到实战
  • 建一个o2o网站网站建设与管理好找工作吗
  • 在线做c 题的网站网站空间如何升级
  • 建电影网站教程学做网站要学什么软件
  • 菏泽网站建设培训学校WordPress无法加载插件js
  • 公司网站建设包含的内容美食网站设计的基本思路
  • 专门做外贸的的网站有哪些展示型企业网站营销目标主要有
  • 如何规划电子商务网站淘宝推广网站怎么建设
  • 网站嵌套代码计算机毕设代做网站
  • 联合需求计划(JRP)详解
  • Visual Studio 2022安装时共享组件、工具、SDK路径无法更改的问题
  • 网站地图什么时候提交好从头建设个人网站步骤
  • 多多返利网站建设企业网站建设时优化关键词的问题
  • 高精度定位数据获取 MQ10具体应用说明
  • 接口测试基础
  • 外贸推广网站有哪些网站主体负责人和网站负责人
  • Git的小组协作
  • 打开一个网站双流区规划建设局网站
  • 做视频网站 视频放在哪互联网营销型网站
  • 深圳网站建设高端重庆网站推广专员
  • 建设银行信用卡管理中心网站wordpress添加搜索关键字
  • 【隐语SecretFlow架构解读】隐私保护模型在线推理系统 SecretFlow-Serving 架构解读
  • 网站做弹窗山东省住房和城乡建设厅注册中心
  • docker基本概念
  • Orleans 在 Kubernetes 上的部署配置
  • ps做网站导航戴尔网站建设成功的关键
  • vue.js做静态网站开发公司网签补充合同
  • 【分享】PPT打开密码的设置与取消方法
  • 网站建设开发合同河南高端网站高端网站建设
  • 面试(二)——流程、方法与数组深入