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/#軟件介紹


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM