Ubuntu安装Gerrit--安装篇 (1/2)

概述

Gerrit,一种开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件开发者,可以相互审阅彼此修改后的代码,决定是否能够提交,回退或是继续修改。

应用场景:

  • 代码审核:审核review +1, +2
  • 门禁自动化:自动构建,代码度量,开源代码扫描等
  • 多分支管理:入库代码同步到其它分支
  • 上库历史:根据上库历史排查修改点

环境搭建

依赖组件:

  • 【ubuntu 18.04 server版本】
  • 【gerrit-2.12.2.war】:官网已经更新到了3.4.1版本,但当前版本功能已经足够 | git clone https://gitee.com/whilewell/tools-gerrit.git
  • 【jre】:1.8版本(jre是java运行环境,jdk是java开发环境)| sudo apt-get install openjdk-8-jre
  • 【postgresql】:数据库 | sudo apt-get install postgresql
  • 【nginx】:反向代理 | sudo apt-get install nginx
  • 【htpasswd】:http认证方式 | apt-get install apache2-utils
  • 【git】:服务器版本自带

安装后的效果图:

给数据库增加账号

postgresql安装后会默认生成独立账号postgres,数据内容进行独立管理。下面也需要使用postgres账号创建新账号

创建账号:wsk
sudo -u postgres createuser -RDIElPS wsk
创建数据库:reviewdb
sudo -u postgres createdb -E UTF-8 -O wsk reviewdb

确认数据库创建结果:
sudo -u postgres psql
gerrit2@wsk:/home$ sudo -u postgres psql
[sudo] password for gerrit2:
psql (10.19 (Ubuntu 10.19-0ubuntu0.18.04.1))
Type "help" for help.

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 reviewdb  | wsk      | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

postgres=#\q
gerrit2@wsk:/home$

增加gerrit2账号

gerrit使用独立账号进行管理

sudo adduser gerrit2 
su gerrit2

初始化gerrit

下面不是首次初始化log,仅供参考。

gerrit2@wsk:~/gerrit$ java -jar gerrit-2.12.2.war init -d review
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$2 (file:/home/gerrit2/.gerritcodereview/tmp/gerrit_3113595962757483013_app/guice_library.jar) to method java.lang.ClassLo
ader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$2
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore

*** Gerrit Code Review 2.12.2
***

*** Git Repositories
***

Location of Git repositories   [/home/gerrit2/git]: /home/gerrit2/git
*** SQL Database
***
Database server type           [postgresql]: postgresql
Server hostname                [localhost]:
Server port                    [(postgresql default)]:
Database name                  [wsk]: reviewdb
Database username              [wsk]: wsk
Change wsk's password          [y/N]? y
wsk's password                 :
              confirm password :
*** Index
***
Type                           [LUCENE/?]:

The index must be rebuilt before starting Gerrit:
  java -jar gerrit.war reindex -d site_path

*** User Authentication
***
Authentication method          [HTTP/?]: 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]?

*** Email Delivery
***
SMTP server hostname           [localhost]:
SMTP server port               [(default)]:
SMTP encryption                [NONE/?]:
SMTP username                  :

*** Container Process
***
Run as                         [gerrit2]:
Java runtime                   [/usr/lib/jvm/java-8-openjdk-amd64/jre]:
Upgrade review/bin/gerrit.war  [Y/n]?
Copying gerrit-2.12.2.war to review/bin/gerrit.war

*** SSH Daemon
***
Listen on address              [*]:
Listen on port                 [29418]:

*** HTTP Daemon
***
Behind reverse proxy           [Y/n]? y
Proxy uses SSL (https://)      [y/N]?
Subdirectory on proxy server   [/]:
Listen on address              [127.0.0.1]:
Listen on port                 [8081]:
Canonical URL                  [http://127.0.0.1/]:

*** Plugins
***
Installing plugins.
Install plugin singleusergroup version v2.12.2 [Y/n]? y
version v2.12.2 is already installed, overwrite it [Y/n]? y
Install plugin commit-message-length-validator version v2.12.2 [Y/n]? y
version v2.12.2 is already installed, overwrite it [Y/n]? y
Install plugin reviewnotes version v2.12.2 [Y/n]? y
version v2.12.2 is already installed, overwrite it [Y/n]? y
Install plugin replication version v2.12.2 [Y/n]? y
version v2.12.2 is already installed, overwrite it [Y/n]? y
Install plugin download-commands version v2.12.2 [Y/n]? y
version v2.12.2 is already installed, overwrite it [Y/n]? y
Initializing plugins.
No plugins found with init steps.

Initialized /home/gerrit2/gerrit/review

上面的过程会生成gerrit配置文件review/etc/gerrit.config,下面关键参数需要与系统保持一致。

gerrit2@wsk:~/gerrit$ cat review/etc/gerrit.config
[gerrit]
        basePath = /home/gerrit2/git         # 说明:git工程根目录
        canonicalWebUrl = http://127.0.0.1/
[database]
        type = postgresql
        hostname = localhost
        database = reviewdb                  # 说明:数据库
        username = wsk                       # 说明:数据库账号
[index]
        type = LUCENE
[auth]
        type = HTTP                          # 说明:认证方式,与nginx配置有关联
[receive]
        enableSignedPush = false
[container]
        user = gerrit2
        javaHome = /usr/lib/jvm/java-8-openjdk-amd64/jre
[sshd]
        listenAddress = localhost:29418
[httpd]
        listenUrl = proxy-http://127.0.0.1:8081/
[cache]
        directory = cache

配置nginx反向代理

sudo vi  /etc/nginx/site-enable/default
server {
        listen 8888;
        server_name localhost;
        location / {
                auth_basic              "Gerrit2 Code Review";
                auth_basic_user_file    /home/gerrit2/gerrit/htpasswd.conf;
                proxy_pass              http://127.0.0.1:8081;
                proxy_set_header        X-Forwarded-For $remote_addr;
                proxy_set_header        Host $host;
        }
        location /login/ {
                proxy_pass              http://127.0.0.1:8081;
                proxy_set_header        X-Forwarded-For $remote_addr;
                proxy_set_header        Host $host;
        }
}

注意点:

  • listen 8888: nginx server 监听的端口,尽量不要使用知名端口80,我这里面换成了8888端口
  • /home/gerrit2/gerrit/htpasswd.conf: 这个是http认证使用的文件,后面需要配置

增加账号和密码

只有第一次增加账号和密码的时候需要携带-c参数,后续新增账号时,可以安装其help提示进行增加

htpasswd -c /home/gerrit2/gerrit/htpasswd.conf wsk wsk

配置并启动gerrit

sudo vi /etc/default/gerritcodereview
GERRIT_SITE=/home/gerrit2/gerrit/review
重连终端, 然后启动gerrit
${GERRIT_SITE}/bin/gerrit.sh start

启动成功后,会显示下面LOG

Starting Gerrit Code Review: OK

注:自己的几次启动失败都是由于java版本不匹配,如果出现失败问题,就需要考虑是否java版本问题

登录gerrit

输入下面链接,就可以登录到gerrit页面。

  • 192.168.83.128:是主机地址
  • 8888: 是nginx监听的地址,不是gerrit配置的8081(这就是反向代理的作用)。
http://192.168.83.128:8888/

参考

https://www.shangmayuan.com/a/0b4f8fb2012e447b89131b51.html | 强烈推荐
https://linjinze999.github.io/gerrit/#软件介绍

posted @ 2021-11-24 00:22  whilewell  阅读(1347)  评论(0编辑  收藏  举报