gerrit和gitlab自动同步(二)

本文介绍了如何集成Gerrit和GitLab,实现Gerrit对GitLab的单向同步。主要内容包括权限配置、秘钥设置、项目创建以及通过Replication插件配置自动同步。集成后,Gerrit的改动会自动同步到GitLab,但GitLab的变动不会影响Gerrit,确保了代码审查和构建的连续性。

集成简介

首先我们需要清楚的知道为什么要集成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
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值