gerrit和gitlab服务集成
集成简介
首先我们需要清楚的知道为什么要集成gitlab或者github等仓库? 才能更好的把握gerrit的功能。
接下来将对它做一个说明:
Gerrit 本身提供 Code Review和 Git 仓库的两大功能,但实际上很多项目用的是其他的Git仓库,例如GitLab和GitHub。有时候为了使用gerrit的code review的功能不可能把原来的git仓库全部替换成gerrit的管理,这样就会随之带来很多影响及副作用。假如之前都是通过jenkins自动构建git仓的,现在要换成gerrit将会导致之前的构建全部不能够使用,这样影响面太大。那么有没有更好的做法呢,肯定是有的。
一般情况下,Gerrit位于最终代码库的前面一层,用于代码的人工审核和对CI任务的触发进行验证。即大多情况下我们只利用gerrit强大的code review的管理功能,代码仓还是其他的git仓。如此我们就面临几个问题,要搞清楚:
- gerrit仓和其他git仓的关系?
- gerrit仓和其他git仓怎么进行实时同步?
- 难道要维护两个仓吗?
这里以GitLab为例,希望的愿景如下:
gerrit是建立在git版本之上的,也就是gerrit是凌驾于gitlab的。
基于此gerrit的改变是可以作用到gitlab上的,但是gitlab的变动是不能作用到gerrit上的,它们是一种管理和被管理的关系。因此它们只能是单向的同步 - gerrit->gitlab
基于这个逻辑,那么我们将gerrit和gitlab关联起来,然后只维护gerrit的仓不就同时维护了gitlab的仓库了吗,如此也就不会对之前jenkins自动构建产生影响。这个逻辑是正确的,gerrit确实也是这么做的。本章将对这个做法做一个梳理,以供实战学习和使用。
注意:
Gerrit和GitLab集成后,在Gerrit上的项目仓库有变化时,会自动同步到GitLab上对应的项目仓库中。
但Gerrit和GitLab的同步只能是单向同步(Gerrit–》GitLab),也就是说直接在GitLab上项目仓库的变动不会自动同步到Gerrit上。
因此建议在Gerrit和GitLab集成后,所有的操作都在Gerrit上完成,这一点很重要,原则上关联了gerrit的仓库是不允许直接在提交gitlab上的仓,以避免出现各自问题(造成同步或冲突等)
在开始本章前,请参阅gerrit服务器搭建和gitlab自动同步(一)章节,可以更好的了解整个过程。如果你已经熟知gerrit的搭建,可以继续往下阅读。
准备工作
- 必须有gerrit服务器的操作权限
- 必须有gitlab服务器的操作权限
我们需要拿到gitlab的秘钥,并设置gerrit服务器的秘钥到gitlab服务器中。以至于两台服务器可以互相免密通信。
权限配置
1.配置gerrit访问gitlab
熟悉linux的应该知道,说白了就是将gerrit的秘钥给到gitlab。
如果不是很了解,下面将给出操作方法,一壶画瓢即可:
- 方法一:
# 1, 登录到gerrit服务器中。
# 确认当前的目录
[gerrit@release ~]$ pwd
/home/gerrit
# 确认当前的用户是谁
[gerrit@release ~]$ whoami
gerrit
[gerrit@release ~]$ pwd
/home/gerrit
# 查看当前是否设置了秘钥, 当前已经设置过了,可以直接cat查看~/.ssh/id_rsa.pub
# 如果没有设置过需要通过ssh-keygen设置即可, 这样将在~/.ssh/目录下生成秘钥文件
[gerrit@release ~]$ ssh-keygen -t rsa -C "youemail@xxxx.com"
gerrit@release:~/gerrit_server/review_site/etc$ ls ~/.ssh/ -l
total 28
-rw------- 1 gerrit gerrit 1679 Jun 21 08:27 id_rsa
-rw-r--r-- 1 gerrit gerrit 398 Jun 21 08:28 id_rsa.pub
# 查看秘钥并拷贝到gitlab服务器中.
[gerrit@release ~]$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCE36kKv9cRTR/UU+7c620a6sYwptzVCRa8KBWBVijXNME+te4Nt2ZKp1uVvVOYKWv4akR/E5wMMTa9sYiE7EZJsC0cfg+FSuvc7WeoyT0hWYEWAabqp1cAApZUKSm7c06829dSTAPLj4MIEQOtEzID8iaq7+kGDf6RsGF6QRrAVx28k5ZJNvNFLpFqv4cjOaDbWOKaVXkrAgYYdLWWJ6xEeQTJ6yxCkk9KY7+rHEHd9zEoJYiA03J9UgxRRkyTX8vRW39RHVVM+GriOasAgwhvhFZXJsm6mJVXr2Y3AFcMNPo4YJNq68LGdU8bjqN78ysBbkxfIDq+r3ANc7+D+Az sshtest
[gerrit@release ~]$
# 2, 登录到gitlab服务器中,并编辑~/.ssh/authorized_keys将gerrit服务器的秘钥粘贴到该文件中
# 如果没有该文件就创建一个
[root@tools-jenkins-gitlab002 ~]# cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCE36kKv9cRTR/UU+7c620a6sYwptzVCRa8KBWBVijXNME+te4Nt2ZKp1uVvVOYKWv4akR/E5wMMTa9sYiE7EZJsC0cfg+FSuvc7WeoyT0hWYEWAabqp1cAApZUKSm7c06829dSTAPLj4MIEQOtEzID8iaq7+kGDf6RsGF6QRrAVx28k5ZJNvNFLpFqv4cjOaDbWOKaVXkrAgYYdLWWJ6xEeQTJ6yxCkk9KY7+rHEHd9zEoJYiA03J9UgxRRkyTX8vRW39RHVVM+GriOasAgwhvhFZXJsm6mJVXr2Y3AFcMNPo4YJNq68LGdU8bjqN78ysBbkxfIDq+r3ANc7+D+Az sshtest
# 3, 在登录到gerrit服务器中验证秘钥是否设置OK。
# -p 是指定ssh的访问端口, 默认是22将不用指定, 这里是1622所以通过-p指定一下
[gerrit@release ~]# ssh 192.168.1.75 -p 1622
Last failed login: Wed Jun 23 19:22:21 CST 2021 from 182.253.28.123 on ssh:notty
There were 9960 failed login attempts since the last successful login.
Last login: Mon Jun 21 17:00:59 2021 from 116.237.130.133
######################################################################
# Notice #
# #
# 1. Please create unique passwords that use a combination of words,#
# numbers, symbols, and both upper-case and lower-case letters. #
# Avoid using simple adjacent keyboard combinations such as #
# "Qwert!234","Qaz2wsx",etc. #
# #
# 2. Unless necessary, please DO NOT open or use high-risk ports, #
# such as Telnet-23, FTP-20/21, NTP-123(UDP), RDP-3389, #
# SSH/SFTP-22, Mysql-3306, SQL-1433,etc. #
# #
# #
# Any questions please contact 4000-955-988 #
######################################################################
[root@tools-jenkins-gitlab002 ~]## pwd
/root
[root@tools-jenkins-gitlab002 ~]## whoami
root
[root@tools-jenkins-gitlab002 ~]# exit
logout
[gerrit@release ~]$
- 方法二,以上ssh提供了一个命令一键拷贝,效果也是一样的
# 在这里按照方法一中,创建gerrit服务器秘钥之后,接着执行以下指令即可:
# 在执行以下指令后,也需要输入gitlab的密码
[gerrit@release ~]$ ssh-copy-id root@192.168.1.75
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@tools-jenkins-gitlab002's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.1.75'"
and check to make sure that only the key(s) you wanted were added.
[root@release ~]#
# 然后通过ssh 登录验证是否ok,同上ssh 192.168.1.75 -p 1622
2.配置gitlab访问gerrit
配置gerrit访问gitlab完成后,这一步实际就是相反的操作, 即将gitlab的秘钥拷贝给gerrit服务器进行免密登录。
下面将给出操作方法,一壶画瓢即可:
# 1. 登录到gitlab服务器
# 确认是否存在秘钥,如果不存在通过ssh-keygen -t rsa -C "youemail@xxx.com"生成
[root@tools-jenkins-gitlab002 ~] cat ~/.ssh/id_rsa.pub
# 拷贝秘钥到gerrit服务器中
[root@tools-jenkins-gitlab002 ~] ssh-copy-id gerrit@10.66.210.123
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/gerrit/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
gerrit@release's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'gerrit@10.66.210.123'"
and check to make sure that only the key(s) you wanted were added.
[root@tools-jenkins-gitlab002 ~]
3.设置gerrit同步gitlab的配置文件
该步骤也是很关键,需要在该配置文件中指定gitlab服务器相关信息,否则将会同步失败。
# 1, 登录到gerrit服务器中操作
# 创建config文件
vi ~/.ssh/config
# 指明gitlab的地址
HOST 119.3.60.xxx
User root #gitlab服务器用户名
Port 1622 # gitlab 访问端口, 如果默认22 将不用添加该项
IdentityFile ~/.ssh/id_rsa # 秘钥在服务器的路径
PreferredAuthentications publickey # 首选认证方式
# 保存即可
4.配置秘钥
该步骤,需要将上述gerrit生成秘钥放到对应的gitlab公钥配置中。
什么意思呢?
首先, 将上述gerrit生成的公钥id_rsa.pub内容拷贝放到gitlab的SSH Key配置中:
5.replication配置设置
Replication插件
如果想要将Gerrit上的改动自动同步到GitLab上,就需要用到Gerrit的Replication插件。
Replication 插件可以同时对接已有的 Git 仓库系统,通常用于提供 changes 的镜像或者热备份,自动地将 Gerrit Code Review创建的任何改动 push 到另外一个系统里。
- 这一步很重要,该步骤放到后面,请继续参阅下面章节自动同步项目->replication插件配置小节
创建项目
经过以上几小节的设置,已经具备同步项目的基础条件。以后将不用在进行设置了。
接下来,我们将学习如果同步gitlab的项目,并通过gerrit自动同步修改。
1.创建一个gitlab的项目
大多情况下,我们都是希望将gitlab现有的一个或几个项目加入到gerrit中进行管理。
我们假设gitlab中已经存在了一个项目tinyalsa,并希望该项目可以被gerrit进行管理, 我们只需要记住该项目的 名称即可 - tinyalsa
注意
如果gitlab没有项目,请自行创建一个测试项目, 在此就不在演示,不会的可以自行搜索学习
2.创建一个gerrit的项目
1, 在这里我们需要通过gerrit创建一个和gitlab中名称一样的项目 - tinyalsa
2, 点击CREATE NEW创建项目
3, 点击CREATE, 这里Repository中一定要填写和gitlab相同的项目名称 - tinyalsa
4, 项目创建成功,并显示了clone代码的命令提示
在此gerrit中创建项目就完成了,那么创建的这个tinyalsa的项目在gerrit中什么位置吗?
还记得我们在安装gerrit的时候,要我们设置的Repository的位置目录吗, 它就是放置我们项目的目录,我们进入查看一下:
# 我们指定的仓库目录为~/repositories
gerrit@release:~/gerrit_server/review_site/etc$ ls ~/repositories/
All-Projects.git All-Users.git tinyalsa.git
gerrit@release:~/gerrit_server/review_site/etc$
是不是有一个tinyalsa.git的一个目录呢, 这就是我们gerrit创建时自动生成项目仓库
注意
该目录下还有两个All-Projects.git All-Users.git目录,在安装gerrit的时候自动生成的,很重要,不要动,这是gerrit权限管理文件
很重要
很重要
很重要的!!!
3.克隆gitlab中tinyalsa项目
以上小节已经在gerrit中创建了tinyalsa的项目,其实他只是一个空仓:
Repositories->tinyalsa->Branches->browes查看是没有任何文件的。
那么如何才能将它与gitlab进行关联呢?
接下来我们就将实现它:
# 进入gerrit版本仓目录
cd ~/repositories
# 删除gerrit自动生成的tinyalsa.git目录, 该目录其实就是一个空仓
rm -rf tinyalsa.git
# 拉取gitlab的tinyalsa项目, 需要指定--bare进行独立拉取以便脱离远程分支
git clone --bare ssh://git@119.3.60.230:1622/gm_aosp/aosp/external/tinyalsa.git
# 这样在通过Repositories->tinyalsa->Branches->browes查看是不是就有了,内容和gitlab的是不是一样的
查看分支
查看code review, 是不是都有内容了
自动同步项目
接下来就是最重要的,如何将gerrit项目tinyalsa的修改自动的同步到gitlab对应的项目tinyalsa呢?
1.replication插件配置
上文提到的replication插件配置就是做这个的。
如何配置呢?
首先需要先安装replication插件, 当前gerrit在安装的时候都自动安装了,无需手动安装。
也可以通过BROWES->plugin进行查看确认是否已经安装:
然后我们需要创建一个~/gerrit_server/review_site/etc/replication.config文件进行指定tinyalsa同步gitlab对应的项目
[remote "tinyalsa"] # 项目名称要一致
rescheduleDelay = 15
projects = tinyalsa # 项目名称要一致
url = ssh://git@119.3.60.xxx:1622/gm_aosp/aosp/external/tinyalsa.git # gitlab的仓地址
push = +refs/heads/*:refs/heads/*
push = +refs/tags/*:refs/tags/*
push = +refs/changes/*:refs/changes/*
threads = 3
保存退出, 并重启
~/gerrit_server/review_site/bin/gerrit.sh restart
2.gerrit拉取并修改同步项目
前面已经做了那么多, 最关键的目的来了。拉取代码并修改提交。
我们通过页面登录到gerrit后,找到tinyalsa项目, 已经告诉我们拉取方式了。当前我们先选择第二种:
# 创建一个test目录
gerrit@release:~$ mkdir gerrit_test
gerrit@release:~$ cd gerrit_test/
# 拉取代码
gerrit@release:~$ git clone "ssh://gerrit@10.66.210.89:29418/tinyalsa"
Cloning into 'tinyalsa'...
remote: Counting objects: 572, done
remote: Finding sources: 100% (572/572)
remote: Total 572 (delta 195), reused 572 (delta 195)
Receiving objects: 100% (572/572), 287.19 KiB | 11.04 MiB/s, done.
Resolving deltas: 100% (195/195), done.
gerrit@release:~/gerrit_test$
gerrit@release:~/gerrit_test$ ls
tinyalsa
gerrit@release:~/gerrit_test$
这里代码就拉取到本地了, 接着我们进行修改:
# 进入tinyalsa项目目录
gerrit@release:~/gerrit_test$ cd tinyalsa/
gerrit@release:~/gerrit_test/tinyalsa$ ls
Android.bp MODULE_LICENSE_BSD NOTICE README include mixer.c pcm.c tinycap.c tinyhostless.c tinymix.c tinypcminfo.c tinyplay.c
gerrit@release:~/gerrit_test/tinyalsa$
gerrit@release:~/gerrit_test/tinyalsa$ vi README
# 修改README增加 'test gerrit modify by sven'
gerrit@release:~/gerrit_test/tinyalsa$ git diff README
diff --git a/README b/README
index 2f8afb0..4671c68 100644
--- a/README
+++ b/README
@@ -11,3 +11,4 @@ The aims are:
- test new gerrit 9 test user2
add code-review test abandone
add submit is not ready test
+ test gerrit modify by sven
gerrit@release:~/gerrit_test/tinyalsa$
# 将改动的文件加入到git中
gerrit@release:~/gerrit_test/tinyalsa$ git add README
# 提交到git仓工作区中
gerrit@release:~/gerrit_test/tinyalsa$ git commit -m "test gerrit sync gitlab"
[master 908a674] test gerrit sync gitlab
1 file changed, 1 insertion(+)
# 推送到远程仓库中
gerrit@release:~/gerrit_test/tinyalsa$ git push origin master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 48 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 323 bytes | 323.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2)
remote: Processing changes: refs: 1, done
To ssh://10.66.210.89:29418/tinyalsa
eb99b3a..908a674 master -> master
gerrit@release:~/gerrit_test/tinyalsa$
以上步骤是不是很熟悉,对了完全是git的基本用法,通过上面的操作我们已经将修改的文件上传到了gerrit同时自动同步到了gitlab的远程服务器。
- 然后通过gerrit页面确认是否已经被正确提交到gerrit tinyalsa仓库中了, 通过查看确实已经有了提交记录如下图:
- 那么gitlab是否也基于同步了呢, 通过gitlab的页面查看确实也同步了,如下图所示:
是不是很神奇,和我们预想的完全一样,这样我们就只维护gerrit服务器一份就同时维护了gitlab的对应项目了
总结
- 1.以上提到的权限配置 (1-3点),只是在搭建gerrit和gitlab互相通信时做一次配置即可,以后无需再进行配置
- 2.replication插件配置需要根据具体的项目进行修改~/gerrit_server/review_site/etc/replication.config
也就是说在gerrit创建一个对应的gitlab项目时,就需要在该配置文件中增加对应的项目节点。 - 3.客户端在拉取gerrit代码仓时走ssh协议时,都需要将公钥加入到对应的gerrit用户的设置SSH Key中, 否则在拉取时会报**Permission denied (publickey).**权限问题
# 因为没有将客户端的秘钥增加到gerrit用户设置中
gerrit@release:~/gerrit_test$ git clone "ssh://gerrit@10.66.210.89:29418/tinyalsa"
Cloning into 'tinyalsa'...
The authenticity of host '[10.66.210.89]:29418 ([10.66.210.89]:29418)' can't be established.
ECDSA key fingerprint is SHA256:NZ85Gw0Rw51zs4UWb5lYpmKrSblhpCdybuCkqBoqXAo.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[10.66.210.89]:29418' (ECDSA) to the list of known hosts.
gerrit@10.66.210.89: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
gerrit@release:~/gerrit_test$
- 4.根据以上的步骤权限配置之后,发现不能自动同步到gitlab远程仓,提示:
Cannot replicate to ssh xxxxx
xxxx invalid privatekey: [B@16b1cf6d 这样的问题
这是因为秘钥版本过高导致,也就是说gitlab通过ssh-keygen的版本较低, 而gerrit通过的ssh-keygen的版本较高引起的不匹配问题。
[2021-06-21 07:38:50,722] [ace5459f] Replication to ssh://git@119.3.xx.xx:1622/gm_aosp/aosp/external/tinyalsa.git started...
[2021-06-21 07:38:50,723] [ace5459f] Push to ssh://git@119.3.xx.xx:1622/gm_aosp/aosp/external/tinyalsa.git references: [RemoteRefUpdate[remoteName=refs/heads/master, NOT_ATTEMPTED, (null)...c7d81577da3a9bdea30b9f710d5cfd229d31a99b, srcRef=refs/heads/master, forceUpdate, message=null]]
[2021-06-21 07:38:50,723] [ace5459f] Cannot replicate to ssh://git@119.3.xx.xx:1622/gm_aosp/aosp/external/tinyalsa.git
org.eclipse.jgit.errors.TransportException: ssh://git@119.3.xx.xx:1622/gm_aosp/aosp/external/tinyalsa.git: invalid privatekey: [B@16b1cf6d
at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:191)
at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:140)
at org.eclipse.jgit.transport.TransportGitSsh$SshPushConnection.<init>(TransportGitSsh.java:339)
at org.eclipse.jgit.transport.TransportGitSsh.openPush(TransportGitSsh.java:176)
at org.eclipse.jgit.transport.PushProcess.execute(PushProcess.java:160)
at org.eclipse.jgit.transport.Transport.push(Transport.java:1346)
at org.eclipse.jgit.transport.Transport.push(Transport.java:1392)
at com.googlesource.gerrit.plugins.replication.PushOne.pushVia(PushOne.java:462)
at com.googlesource.gerrit.plugins.replication.PushOne.runImpl(PushOne.java:432)
at com.googlesource.gerrit.plugins.replication.PushOne.runPushOperation(PushOne.java:316)
at com.googlesource.gerrit.plugins.replication.PushOne.lambda$run$0(PushOne.java:282)
at com.google.gerrit.server.util.RequestScopePropagator.lambda$cleanup$1(RequestScopePropagator.java:182)
at com.google.gerrit.server.util.RequestScopePropagator.lambda$context$0(RequestScopePropagator.java:170)
at com.google.gerrit.server.git.PerThreadRequestScope$Propagator.lambda$scope$0(PerThreadRequestScope.java:70)
at com.googlesource.gerrit.plugins.replication.PushOne.run(PushOne.java:285)
at com.google.gerrit.server.logging.LoggingContextAwareRunnable.run(LoggingContextAwareRunnable.java:72)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:610)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.jcraft.jsch.JSchException: invalid privatekey: [B@16b1cf6d
at com.jcraft.jsch.KeyPair.load(KeyPair.java:664)
at com.jcraft.jsch.KeyPair.load(KeyPair.java:561)
at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:40)
at com.jcraft.jsch.JSch.addIdentity(JSch.java:407)
at com.jcraft.jsch.JSch.addIdentity(JSch.java:367)
at org.eclipse.jgit.transport.JschConfigSessionFactory.getJSch(JschConfigSessionFactory.java:399)
at org.eclipse.jgit.transport.JschConfigSessionFactory.createSession(JschConfigSessionFactory.java:335)
at org.eclipse.jgit.transport.JschConfigSessionFactory.createSession(JschConfigSessionFactory.java:208)
at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:138)
... 23 more
[2021-06-21 07:39:50,724] [ace5459f] Replication to ssh://git@119.3.xx.xx:1622/gm_aosp/aosp/external/tinyalsa.git started...
[2021-06-21 07:39:50,725] [ace5459f] Push to ssh://git@119.3.xx.xx:1622/gm_aosp/aosp/external/tinyalsa.git references: [RemoteRefUpdate[remoteName=refs/heads/master, NOT_ATTEMPTED, (null)...c7d81577da3a9bdea30b9f710d5cfd229d31a99b, srcRef=refs/heads/master, forceUpdate, message=null]]
[2021-06-21 07:39:50,725] [ace5459f] Cannot replicate to ssh://git@119.3.xx.xx:1622/gm_aosp/aosp/external/tinyalsa.git
解决办法就是: 降低gerrit服务器ssh-keygen的版本,或者将gitlab的秘钥直接拷贝到gerrit的~/.ssh/目录中即可。
我用的是第二种方式,直接将秘钥复制到gerrit服务器中。
- 5.如果gitlab和gerrit服务器直接没有做免密设置,也会发送不能自动同步问题,具体日志可以查看
~/gerrit_server/review_site/logs/replication_log
该章节主要梳理了搭建完gerrit服务器后,怎么才可以与gitlab进行同步的方法。这也是最基本的诉求,其中并没有涉及到代码如何管理、如何review审核、权限如何设置等在工作开发中实实在在要用到的功能。
正所谓:工欲善其事,必先利其器 只有基础工作做准备好了 才可以更好的理解和使用之 。
请看下一章节gerrit邮箱设置