gerrit服务器搭建和gitlab自动同步(一)
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自动同步(一)相关推荐
- gitlab自动同步github
问题描述 实验室在自己的服务器上有一个gitlab,同步起来很方便:另一方面,由于某些原因,本地仓库同步到github失败率很高.因此,希望将本地代码同步到gitlab, 同时由gitlab自动镜像p ...
- SVN服务器搭建和web目录同步
Linux环境下配置同步更新的SVN服务器 转自 http://www.neatstudio.com/show-571-1.shtml 先搭建环境 Linux版本选择Centos5.0(膘叔:我是用的 ...
- 阿里云服务器搭建私服gitlab
一.gitlab搭建的硬件要求: 建议阿里云服务器的配置为:最低2核4G内存: 最优4核8G 之前搜了很多资源,有的说1核1G就够用了,有的说很耗硬件配置.自己试了下:先用的阿里云1核1G 的服务器搭 ...
- 提交代码到Gitlab自动同步备份到Gitee
一.明确需求,日常工作中使用的代码管理工具是Gitlab,但是我们需要Gitee也要有一份跟Gitlab代码库中的同样的代码并且Gitlab有新的提交就自动同步到Gitee. 二.入坑前准备工作 ①分 ...
- NFS服务器搭建与autofs自动挂载
1.创建用户及NIS用户主目录 建议在NIS服务器上建立独立的目录存放NIS帐号信息,如果保持设置设置则客户端挂载NIS主目录到/ home目录时会覆盖大部分用户主目录而导致其他异常错误: 我们现在建 ...
- mysql存储过程同步本地_python-gitlab自动同步mysql存储过程以及本地文件上传gitlab...
**运行环境: Python 2.7.5 , linux ** 参考文档 python-gitlab简介 pip install python-gitlab #官方建议使用配置文件 vi .pytho ...
- jenkins+gitlab实现手动和自动同步
jenkins+gitlab实现手动和自动同步 jenkins介绍: jenkins安装: jenkins和gitlab手动同步 jenkins和gitlab自动同步 jenkins介绍: CI&am ...
- Gerrit平台代码自动同步到Gitlab
Gerrit平台代码自动同步到Gitlab 本文介绍如何将Gerrit代码托管平台上的代码自动同步到Gitlab平台 Gerrit服务器192.168.1.161,版本gerrit-3.1.2.war ...
- svn同步文件到web服务器,Centos7上搭建SVN服务器并实现自动同步至web目录
前言: 由于最近跟学长一起合作完成一个小项目,然后我俩比较熟悉的版本控制是SVN,就考虑着在服务器上搭建一个SVN服务器.现在在这里给出简单的搭建过程. (其实吧,能用Git就尽量用git吧,好处自己 ...
最新文章
- python中complex函数的用法_Python 内置函数complex详解
- 测试数据库sql声明效率
- Asp.net 后台添加CSS、JS、Meta标签
- java excel data 导入数据_java实现导入导出excel数据
- MongoDB 教程四: 高级更改操作
- javabean 学习笔记
- 前端javascript经典面试题集合(2020年最新)
- 几个大厂及 RCE漏洞二三事
- Windows设置exe或者bat文件开机启动的几种方法汇总
- 练习27——IO流的所有用法(二)
- Android仿制知乎滑动广告条
- OpenMP编程(4)—sections、single指令
- 品达通用_9. pd-tools-log
- _032_rationalRose_包图的画法
- 图片 EXIF 问题
- 知道创宇研发技能表v2.2
- 《算法导论(原书第3版)》pdf
- 电子信息工程专业考研选择物联网开发怎么样?
- 【报告分享】2020美好城市指数:短视频与城市繁荣关系白皮书(附下载)
- mysql数据库报错1709_一、数据库的使用Mysql