gerrit服务器搭建和gitlab自动同步(一) 您所在的位置:网站首页 docker搭建gerrit gerrit服务器搭建和gitlab自动同步(一)

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

2023-10-10 01:52| 来源: 网络整理| 查看: 265

gerrit服务器搭建和gitlab自动同步 gerrit简介对比gitlab的区别gitlab的特点gerrit的特点总结 gerrit安装准备1.Ubuntu Server 21.042.OpenJdk83.Nginx安装4.apache2-utils5.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.04OpenJdk8Nginxapache2-utilsgerrit 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 : [email protected] *** 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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有