gerrit服务器搭建和gitlab自动同步

  • gerrit简介
  • 对比gitlab的区别
    • gitlab的特点
    • gerrit的特点
    • 总结
  • gerrit安装准备
    • 1.Ubuntu Server 21.04
    • 2.OpenJdk8
    • 3.Nginx安装
    • 4.apache2-utils
    • 5.gerrit下载
  • gerrit服务器安装
  • gerrit配置和代理设置

gerrit简介

在gerrit搭建之前我们先了解一下gerrit的作用,以至于我们可以更好的理解它与其他git版本库的区别。

代码审查对不同的人意味着不同的东西。对一些人来说,这是一次与设计师或一个团队一行一行过代码的正式会议。对其他人来说,就是在提交代码之前,让别人浏览一下代码。

Gerrit的目的就是为代码提交到代码库之前提供一个评审的轻量级框架。代码提交到Gerrit上之后,实际上并没有真正被项目接受,直到被评审通过。

Gerrit在代码被正式接受之前,为代码检查设置了一个staging area,在这里可以对该提交进行修改、讨论、增加注释……

分布式进行、不需要面对面操作

对比gitlab的区别

gitlab的特点

  • 是一个人维系一个分支。
  • 提供了比较多的选择,可以根据需要创建project,每个团队可以根据自己的需求管理自己的代码,方式更加的灵活。
  • 是以merge request作为一次review,merge request中可能包含多个 commit,如果review不通过也不需要发起另一次merge request。
  • 可以选择公开代码,团队间可以看到互相的代码,有利于团队的协作。
  • 可以提供issues,wiki等功能方便开发者与使用者之间的沟通,并且gitlab可以无缝的与一些项目管理工具集成,比如:jira,repo。

gerrit的特点

  • 是一个团队维系一个分支。(这里的分支对应一个业务需求)
  • 比较单一,而且权限配置比较复杂,往往都是要联系管理员做出修改,每个团队很难做到对代码的个性化管理。
  • 是以commit作为一次review,由于changeId的存在,可以对一次commit反复的进行review。
    如果task划分的粒度够细的话,并不会影响各个团队的review习惯。
  • 由于权限控制问题,只能在权限范围内公开代码。
  • 这个方面比较欠缺。

总结

gerrit作为谷歌管理安卓项目的版本管理工具还是有其优点的,
多部门之间的权限隔离,强制review的机制都是其优点,
反观gitlab作为github的开源版,遵循了一套开源的流程,比较符合大多数人得习惯。
所以,通过比较,推荐使用gitlab作为版本管理工具,并且不与gerrit做集成。

gerrit安装准备

  • Ubuntu Server 21.04
  • OpenJdk8
  • Nginx
  • apache2-utils
  • gerrit

1.Ubuntu Server 21.04

首先选择安装的服务器,在此以Ubuntu server21.04为例,当然你们也可以选择桌面版。具体安装自行查阅。
服务器准备好之后,我们最好创建一个专有用户运行gerrit服务。 在此我们单独创建了gerrit用户:

sudo adduser gerrit              # 创建gerrit用户
sudo usermod -aG sudo gerrit    # 赋予sudo管理权限
su gerrit                       # 切换到gerrit用户

2.OpenJdk8

其次,需要安装jdk,在gerrit运行的时候需要jdk8支持, 有的gerrit版还需要安装更高版本的jdk。所以需要安装jdk8及更高级别的jdk才行。 在这里我们下载的gerrit是3.0.0版本,因此jdk8就已经全部支持安装和运行了。

sudo apt install -y openjdk-8-jdk

注意

对应gerrit-3.3.0以上版本好像需要安装jdk8及jdk8以上的更高级别的。
高级别的jdk是用于安装gerrit负责会报错,jdk8只负责运行gerrit。

3.Nginx安装

nginx服务用于代理访问gerrit的管理服务,用于用户访问gerrit的入口。

sudo apt install -y nginx

4.apache2-utils

安装Apache工具用于添加gerrit用户

sudo apt install -y apache2-utils

5.gerrit下载

gerrit的下载链接,里面有很多版本,在此我们选择的版是gerrit-3.0.0.war
下载如下:

# 创建gerrit_server目录
mkdir ~/gerrit_server
# 进入该目录
cd gerrit_server
# 下载gerrit-3.0.0.war
wget https://gerrit-releases.storage.googleapis.com/gerrit-3.0.0.war
ls
gerrit@release:~/gerrit_server$ ls -l
total 216304
-rw-r--r--  1 gerrit gerrit 68714982 Jun 11 08:32 gerrit-3.0.0.war
gerrit@release:~/gerrit_server$

gerrit服务器安装

以上准备工作都完成之后,接下来将正式开始安装gerrit的服务了。

# 安装之前先创建一个存放git的仓库目录,如果不创建的话将会默认到gerrit安装目录中,
# 个人习惯将安装目录和仓库目录分开放
mkdir ~/repositories
# gerrit安装
# -d 后面是指定gerrit将要安装到哪个位置,需要指定一个目录
java -jar gerrit*.war init -d review_site

执行上面命令后,将会输出以下配置信息:

Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore
[2021-06-23 14:49:12,928] [main] INFO com.google.gerrit.server.config.GerritServerConfigProvider : No /home/user/gerrit_server/gerrit.mydomain.com/etc/gerrit.config; assuming defaults
*** Gerrit Code Review 3.0.0***
*** Git Repositories***
// 设置gerrit仓库目录, 即上面创建的repositories目录
Location of Git repositories [git]: /home/gerrit/repositories
*** Index***
Type [lucene/?]: lucene
*** User Authentication***
// 设置为http认证模式
Authentication method [openid/?]: http
Get username from custom HTTP header [y/N]?
SSO logout URL :
Enable signed push support [y/N]?
*** Review Labels***
Install Verified label [y/N]? y
*** Email Delivery***
// 最好要写上邮箱服务,省的后面还是需要配置
// 在这写的是公司邮箱服务,如果是qq可以这样写: smtp.163.com
SMTP server hostname [localhost]: mail.xxxx.com.cn
SMTP server port [(default)]: 25
SMTP encryption [none/?]:
SMTP username : djzheng@wxxxx.com.cn
*** Container Process***
Run as [user]:
Java runtime [/usr/lib/jvm/java-8-openjdk-amd64/jre]:
Copy gerrit-3.0.0.war to gerrit.mydomain.com/bin/gerrit.war [Y/n]?Y
Copying gerrit-3.0.0.war to gerrit.mydomain.com/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]?
Use SSL (https://) [y/N]?
Listen on address []:
Listen on port [8443]:
Canonical URL [https://ubuntu:8081/]: http:10.66.210.123:8081
Create new self-signed SSL certificate [Y/n]?
Certificate server name [gerrit.mydomain.com]:
Certificate expires in (days) [365]:
*** Cache
**
Delete cache file /home/user/gerrit_server/gerrit.mydomain.com/cache/oauth_tokens.lock.db [y/N]?
Delete cache file /home/user/gerrit_server/gerrit.mydomain.com/cache/web_sessions.lock.db [y/N]?
Delete cache file /home/user/gerrit_server/gerrit.mydomain.com/cache/mergeability.lock.db [y/N]?
Delete cache file /home/user/gerrit_server/gerrit.mydomain.com/cache/diff.lock.db [y/N]?
Delete cache file /home/user/gerrit_server/gerrit.mydomain.com/cache/pure_revert.lock.db [y/N]?
Delete cache file /home/user/gerrit_server/gerrit.mydomain.com/cache/conflicts.lock.db [y/N]?
Delete cache file /home/user/gerrit_server/gerrit.mydomain.com/cache/diff_summary.lock.db [y/N]?
Delete cache file /home/user/gerrit_server/gerrit.mydomain.com/cache/diff_intraline.lock.db [y/N]?
Delete cache file /home/user/gerrit_server/gerrit.mydomain.com/cache/git_tags.lock.db [y/N]?
Delete cache file /home/user/gerrit_server/gerrit.mydomain.com/cache/change_kind.lock.db [y/N]?
*** Plugins***
Installing plugins.
Install plugin codemirror-editor version v3.0.0 [y/N]? y
Installed codemirror-editor v3.0.0
Install plugin commit-message-length-validator version v3.0.0 [y/N]? y
Installed commit-message-length-validator v3.0.0
Install plugin delete-project version v3.0.0 [y/N]? y
Installed delete-project v3.0.0
Install plugin download-commands version v3.0.0 [y/N]? y
Installed download-commands v3.0.0
Install plugin gitiles version v3.0.0 [y/N]? y
Installed gitiles v3.0.0
Install plugin hooks version v3.0.0 [y/N]? y
Installed hooks v3.0.0
Install plugin plugin-manager version v3.0.0 [y/N]? y
Installed plugin-manager v3.0.0
Install plugin replication version v3.0.0 [y/N]? y
Installed replication v3.0.0
Install plugin reviewnotes version v3.0.0 [y/N]? y
Installed reviewnotes v3.0.0
Install plugin singleusergroup version v3.0.0 [y/N]? y
Installed singleusergroup v3.0.0
Install plugin webhooks version v3.0.0 [y/N]? y
Installed webhooks v3.0.0
Initializing plugins.
Initialized /home/user/gerrit_server/gerrit.mydomain.com
Reindexing projects: 100% (2/2) with: reindex --site-path gerrit.mydomain.com --threads 1 --index projects
Reindexed 2 documents in projects index in 2.1s (0.9/s)

如此,gerrit就安装完成了,可以通过ps查看是否已经运行:

# ps -aux | grep gerrit
gerrit      1910  0.0  0.0   9056  5880 pts/0    Ss   Jun22   0:00 -bash
gerrit      7363  0.2  4.2 25553812 1365204 ?    Sl   Jun22   3:52 GerritCodeReview -Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance -Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance -jar /home/gerrit/gerrit_server/review_site/bin/gerrit.war daemon -d /home/gerrit/gerrit_server/review_site --run-id=1624360603.7326

gerrit配置和代理设置

上一小节,gerrit已经安装好了。那么接下来是否可以正确访问了呢。
我们试一下:
在浏览器中输入:上面设置的IP地址: 10.66.210.123:8081

但是此时访问存在配置问题,因为当启用http方式验证的时候,gerrit禁止直接通过端口与gerrit相连,此时需要借助Nginx反向代理访问,因而需要配置Nginx反向代理。
输入本机ip测试nginx是通的。

接下来我们需要设置一下代理:
首先,先确认并修改一下合适的端口,编辑gerrit配置文件:

vi ~/gerrit_server/review_site/etc/gerrit.config

其次, 接下来设置nginx反向代理:

# 创建一个gerrit.conf server配置文件,并设置内容如下:
cat /etc/nginx/sites-enabled/gerrit.conf
server {# 设置访问代理端口listen *:8443;server_name localhost;location / {auth_basic              "Welcomme to Gerrit Code Review Site";#确保passwd路径正确, 该passwd后面将会讲到。在此我们先将passwd放置到gerrit安装目录下的etc目录中auth_basic_user_file    /home/gerrit/gerrit_server/review_site/etc/passwd;# 该代理要和前面gerrit.config中设置的端口保持一致性proxy_pass              http://localhost:8081;proxy_set_header        X-Forwarded-For $remote_addr;proxy_set_header        Host $host;}location /login/ {# 该代理要和前面gerrit.config中设置的端口保持一致性proxy_pass              http://localhost:8081;proxy_set_header        X-Forwarded-For $remote_addr;proxy_set_header        Host $host;}
}

注意:

我用的nginx的版本是nginx version: nginx/1.18.0 (Ubuntu)。 所以直接创建一个配置放到/etc/nginx/sites-enabled目录中,重启nginx即可。
如果是其他版本的nginx要视具体情况添加配置。有的版本需要添加到/etc/nginx/nginx.conf中。

然后, 给gerrit创建一个用户,还记得前面提到的passwd文件吗? 接下来我们就要创建它

# 和Linux正常添加用户密码一样
# 这里我们第一次创建通过-c 并设置第一个用户为gerrit
# 即执行如下命令,并根据提示设置密码
sudo htpasswd -c ~/gerrit_server/review_site/etc/passwd gerrit

最后, 我们将对以上的改动重启服务,生效

# 重启nginx服务
service nginx restart
# 重启gerrit服务
~/gerrit_server/review_site/bin/gerrit.sh restart

接下来, 我们在通过浏览器访问gerrit,注意端口是nginx设置的访问端口8443
当输入浏览器后, 提示输入密码:

输入密码登录后, 将弹出确认信息:

注意:

如果是第一次登录,那么该账号将作为管理权限账号使用。

点击close进入到dashboard显示页面, 至此gerrit的安装已经完成了。

gitlab自动同步gerrit关联设置,请看下一章节

参考:
https://blog.csdn.net/CyrilTaylor/article/details/89463271

gerrit服务器搭建和gitlab自动同步(一)相关推荐

  1. gitlab自动同步github

    问题描述 实验室在自己的服务器上有一个gitlab,同步起来很方便:另一方面,由于某些原因,本地仓库同步到github失败率很高.因此,希望将本地代码同步到gitlab, 同时由gitlab自动镜像p ...

  2. SVN服务器搭建和web目录同步

    Linux环境下配置同步更新的SVN服务器 转自 http://www.neatstudio.com/show-571-1.shtml 先搭建环境 Linux版本选择Centos5.0(膘叔:我是用的 ...

  3. 阿里云服务器搭建私服gitlab

    一.gitlab搭建的硬件要求: 建议阿里云服务器的配置为:最低2核4G内存: 最优4核8G 之前搜了很多资源,有的说1核1G就够用了,有的说很耗硬件配置.自己试了下:先用的阿里云1核1G 的服务器搭 ...

  4. 提交代码到Gitlab自动同步备份到Gitee

    一.明确需求,日常工作中使用的代码管理工具是Gitlab,但是我们需要Gitee也要有一份跟Gitlab代码库中的同样的代码并且Gitlab有新的提交就自动同步到Gitee. 二.入坑前准备工作 ①分 ...

  5. NFS服务器搭建与autofs自动挂载

    1.创建用户及NIS用户主目录 建议在NIS服务器上建立独立的目录存放NIS帐号信息,如果保持设置设置则客户端挂载NIS主目录到/ home目录时会覆盖大部分用户主目录而导致其他异常错误: 我们现在建 ...

  6. mysql存储过程同步本地_python-gitlab自动同步mysql存储过程以及本地文件上传gitlab...

    **运行环境: Python 2.7.5 , linux ** 参考文档 python-gitlab简介 pip install python-gitlab #官方建议使用配置文件 vi .pytho ...

  7. jenkins+gitlab实现手动和自动同步

    jenkins+gitlab实现手动和自动同步 jenkins介绍: jenkins安装: jenkins和gitlab手动同步 jenkins和gitlab自动同步 jenkins介绍: CI&am ...

  8. Gerrit平台代码自动同步到Gitlab

    Gerrit平台代码自动同步到Gitlab 本文介绍如何将Gerrit代码托管平台上的代码自动同步到Gitlab平台 Gerrit服务器192.168.1.161,版本gerrit-3.1.2.war ...

  9. svn同步文件到web服务器,Centos7上搭建SVN服务器并实现自动同步至web目录

    前言: 由于最近跟学长一起合作完成一个小项目,然后我俩比较熟悉的版本控制是SVN,就考虑着在服务器上搭建一个SVN服务器.现在在这里给出简单的搭建过程. (其实吧,能用Git就尽量用git吧,好处自己 ...

最新文章

  1. python中complex函数的用法_Python 内置函数complex详解
  2. 测试数据库sql声明效率
  3. Asp.net 后台添加CSS、JS、Meta标签
  4. java excel data 导入数据_java实现导入导出excel数据
  5. MongoDB 教程四: 高级更改操作
  6. javabean 学习笔记
  7. 前端javascript经典面试题集合(2020年最新)
  8. 几个大厂及 RCE漏洞二三事
  9. Windows设置exe或者bat文件开机启动的几种方法汇总
  10. 练习27——IO流的所有用法(二)
  11. Android仿制知乎滑动广告条
  12. OpenMP编程(4)—sections、single指令
  13. 品达通用_9. pd-tools-log
  14. _032_rationalRose_包图的画法
  15. 图片 EXIF 问题
  16. 知道创宇研发技能表v2.2
  17. 《算法导论(原书第3版)》pdf
  18. 电子信息工程专业考研选择物联网开发怎么样?
  19. 【报告分享】2020美好城市指数:短视频与城市繁荣关系白皮书(附下载)
  20. mysql数据库报错1709_一、数据库的使用Mysql

热门文章

  1. Selenium的实现原理,一篇文章讲透彻!
  2. 筑泰防务受邀参加公安无线通信与移动警务技术应用研讨会
  3. 如何去掉文本中的标点符号
  4. 搜索推荐系统[10]项目实战系列Z1:手把手教学(商品搜索系统、学术文献检索)语义检索系统搭建、召回排序模型详解。
  5. 数据结构与算法基础(java版)
  6. C# 平方、开方、保留小数 运算
  7. 淘宝直播间互动工具,自动回复助手,匹配关键词回复指定内容
  8. 修改 div 的滚动条的样式
  9. 常用排序算法总结(C语言版)
  10. Matlab/Simulink 中示波器背景和线条颜色更改与图片保存方法