1. 程式人生 > >程式碼管理之gerrit+git環境搭建

程式碼管理之gerrit+git環境搭建

之前已經搭建過repo+git的倉庫管理,現在再整合一下gerrit。

原料準備:

1. jdk1.8環境 jdk-8u161-linux-x64.tar.gz
2. gerrit安裝包 gerrit-2.12.war
可能還需要:
1. bcpkix-jdk15on-1.52.jar
2. mysql-connector-java-5.1.21.jar
這兩個是在安裝gerrit的過程中會用到的jar包,過程中會提示你下載,也可手動提前下載好。

步驟:
1. 在ubuntu系統內新建gerrit賬戶,並切換至gerrit賬戶。安裝java version 1.8環境,並配置gerrit賬戶的java環境變數為1.8。此步驟自行百度。

2. git環境搭建。執行命令:
$sudo apt-get install git-core gitweb git-daemon-run
3. APACHE安裝。

3.1 在終端中執行:
$ sudo apt-get install apache2 apache2-utils
3.2 配置APACHE。開啟 apache2 的 proxy 功能,在終端中執行:
$ sudo a2enmod proxy
$ sudo a2enmod proxy_balancer
$ sudo a2enmod proxy_connect
$ sudo a2enmod proxy_http
建立/etc/apache2/sites-available/gerrit.conf 檔案:
$sudo vim /etc/apache2/sites-available/gerrit.conf
追加以下內容:
<VirtualHost *:8088>
    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny,allow
        Deny From all
        Allow from all
    </Proxy>
    <Location /login/>
        AuthType Basic
        AuthName "Gerrit Code Review"
        Require valid-user
        AuthBasicProvider file
        AuthUserFile /var/www/gerrit_passwd/.gerrit.password
    </Location>
    AllowEncodedSlashes On
    ProxyPass / http://127.0.0.1:8081/ nocanon
    ProxyPassReverse / http://127.0.0.1:8081/
</VirtualHost>
編輯/etc/apache2/ports.conf 檔案,在 Listen 80 的下面追加 Listen 8088。
$sudo vim /etc/apache2/ports.conf
啟用/etc/apache2/sites-available/gerrit.conf 檔案配置,在終端中執行:
$ sudo a2ensite gerrit.conf
建立 gerrit 管理員賬號,在終端中執行:
$ sudo mkdir -p /var/www/gerrit_passwd
$ sudo htpasswd -s /var/www/gerrit_passwd/.gerrit.password  xxx
其中xxx為賬號名,根據提示輸入密碼即可。
重啟 apache2,在終端中執行:
$ sudo service apache2 restart
(注:重啟可能遇到錯誤AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message。
解決:$sudo vim /etc/apache2/apache2.conf,追加一句:ServerName localhost:8088)

4. 安裝配置MYSQL+PHPMYADMIN

4.1 安裝
在終端中執行:
$ sudo apt-get install mysql-server phpmyadmin
Mysql-server 安裝過程中,按照提示設定管理員賬戶密碼。
Phpmyadmin 安裝過程中,按照提示設定管理員賬戶和密碼。

4.2 配置
將 phpmyadmin 載入到 apache2 中,在終端中執行:
$ sudo cp /etc/phpmyadmin/apache.conf /etc/apache2/sites-available/phpmyadmin.conf
$ sudo a2ensite phpmyadmin.conf
$ sudo service apache2 restart
通過終端訪問 mysql,建立使用者和 reviewdb 的資料庫如下,在終端中執行:
$ mysql -u  root -p
$ Enter password:  管理員密碼
此處密碼為安裝MYSQL時設定的密碼
mysql> create user 'gerrit'@'localhost' identified by 'gerrit';
此步驟設定gerrit賬號的密碼為gerrit。
mysql> create database reviewdb;
mysql> alter database reviewdb charset=utf8;
mysql> grant all on reviewdb.* to 'gerrit'@'localhost';
mysql> flush privileges;

5 GERRIT

5.1  安裝
自行下載 gerrit 安裝包,使用 jar 安裝 gerrit 包,在終端中執行:
$ java -jar tools/gerrit-2.12.war init -d review_site
5.2  配置
安裝過程中,參照以下完成初步配置:

*** Gerrit Code Review 2.12
***
Create '/home/git/review_site' [Y/n]? 直接回車
*** Git Repositories
***
Location of Git repositories [git]:  程式碼庫絕對路徑
*** SQL Database
***
Database server type [h2]: mysql
Gerrit Code Review is not shipped with MySQL Connector/J 5.1.21
** This library is required for your configuration. **
Download and install it now [Y/n]? 直接回車
Server hostname [localhost]:直接回車
Server port [(mysql default)]: 直接回車
Database name [reviewdb]: 直接回車
Database username [git]: gerrit
gerrit's password : mysql 中給 gerrit 賬戶設定的密碼
confirm password : mysql 中給 gerrit 賬戶設定的密碼
*** Index
***
Type [LUCENE/?]: 直接回車
*** User Authentication
***
Authentication method [OPENID/?]: HTTP
Get username from custom HTTP header [y/N]? 直接回車
SSO logout URL : 伺服器 IP
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 [gitadmin]: 直接回車
Java runtime [/usr/lib/jvm/jdk1.8.0_102/jre]: 直接回車
Copy gerrit-2.12.war to review_site_temp/bin/gerrit.war [Y/n]? 直接回車
*** SSH Daemon
***
Listen on address [*]: 直接回車
Listen on port [29418]: 直接回車
Gerrit Code Review is not shipped with Bouncy Castle Crypto SSL v152
If available, Gerrit can take advantage of features
in the library, but will also function without it.
Download and install it now [Y/n]? 直接回車
*** 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:8081/]: http:// 伺服器 IP :8088/
*** Plugins
***
Installing plugins.
Install plugin singleusergroup version v2.12 [y/N]? y
Install plugin commit-message-length-validator version v2.12 [y/N]? y
Install plugin reviewnotes version v2.12 [y/N]? y
Install plugin replication version v2.12 [y/N]? y
Install plugin download-commands version v2.12 [y/N]? y
以上互動式配置過程結束後,可能會因為以下 jar 包和沒有下載,導致 gerrit 安裝後的自動啟動失敗。此時手動下載以下 jar 包到 review_site/lib 目錄中即可。
mysql-connector-java-5.1.21.jar
bcpkix-jdk15on-152.jar

gerrit 安裝後會自動啟動,如果沒有自動啟動,可以手動啟動 gerrit。
啟動 gerrit,在終端中執行:
$ review_site/bin/gerrit.sh start
$ review_site/bin/gerrit.sh start
在安裝過程對gerrit的配置可能並不完整 ,編輯review_site/etc/gerrit.config 檔案,補充相關配置。
review_site/etc/gerrit.config 檔案更新完了後,重啟 gerrit,在終端中執行:
$ review_site/bin/gerrit.sh start

(注:重啟gerrit可能出現FAILED的問題。解決Starting Gerrit Code Review: FAILED的問題。

執行命令:review_site/bin/gerrit.sh run檢視是何原因導致的失敗。

[email protected]:~$ review_site/bin/gerrit.sh start
Starting Gerrit Code Review: FAILED
[email protected]:~$ review_site/bin/gerrit.sh run
Running Gerrit Code Review:
[2018-01-25 14:41:57,630] [main] INFO  com.google.gerrit.server.cache.h2.H2CacheFactory : Enabling disk cache /home/git/review_site/cache
[2018-01-25 14:41:58,788] [main] INFO  com.google.gerrit.server.config.ScheduleConfig : gc schedule parameter "gc.interval" is not configured
[2018-01-25 14:41:58,788] [main] INFO  com.google.gerrit.server.config.ScheduleConfig : changeCleanup schedule parameter "changeCleanup.interval" is not configured
[2018-01-25 14:41:59,798] [main] INFO  org.eclipse.jetty.util.log : Logging initialized @6496ms
[2018-01-25 14:41:59,984] [main] INFO  com.google.gerrit.server.git.LocalDiskRepositoryManager : Defaulting core.streamFileThreshold to 456m
[2018-01-25 14:42:00,123] [main] INFO  com.google.gerrit.server.plugins.PluginLoader : Loading plugins from /home/git/review_site/plugins
一月 25, 2018 2:42:00 下午 com.google.inject.servlet.GuiceFilter setPipeline
警告: Multiple Servlet injectors detected. This is a warning indicating that you have more than one GuiceFilter running in your web application. If this is deliberate, you may safely ignore this message. If this is NOT deliberate however, your application may not work as expected.
[2018-01-25 14:42:00,403] [main] INFO  com.google.gerrit.server.plugins.PluginLoader : Loaded plugin commit-message-length-validator, version v2.12
[2018-01-25 14:42:00,544] [main] INFO  com.google.gerrit.server.plugins.PluginLoader : Loaded plugin download-commands, version v2.12
[2018-01-25 14:42:00,733] [main] WARN  com.googlesource.gerrit.plugins.replication.ReplicationFileBasedConfig : Config file /home/git/review_site/etc/replication.config does not exist; not replicating
[2018-01-25 14:42:00,742] [main] INFO  com.google.gerrit.server.plugins.PluginLoader : Loaded plugin replication, version v2.12
[2018-01-25 14:42:00,873] [main] INFO  com.google.gerrit.server.plugins.PluginLoader : Loaded plugin reviewnotes, version v2.12
[2018-01-25 14:42:00,947] [main] INFO  com.google.gerrit.server.plugins.PluginLoader : Loaded plugin singleusergroup, version v2.12
[2018-01-25 14:42:00,949] [main] ERROR com.google.gerrit.pgm.Daemon : Unable to start daemon
com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) No index versions ready; run Reindex

1 error
    at com.google.gerrit.lucene.LuceneVersionManager.start(LuceneVersionManager.java:124)
    at com.google.gerrit.lifecycle.LifecycleManager.start(LifecycleManager.java:74)
    at com.google.gerrit.pgm.Daemon.start(Daemon.java:302)
    at com.google.gerrit.pgm.Daemon.run(Daemon.java:203)
    at com.google.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:64)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.google.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java:159)
    at com.google.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:100)
    at com.google.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:56)
    at Main.main(Main.java:25)

根據提示需要run Reindex,執行下列命令執行Reindex後重新restart gerrit。

[email protected]:~$ java -jar tools/gerrit-2.12.war reindex -d /home/git/review_site
[2018-01-25 14:45:13,566] [main] INFO  com.google.gerrit.server.git.LocalDiskRepositoryManager : Defaulting core.streamFileThreshold to 456m
[2018-01-25 14:45:14,334] [main] INFO  com.google.gerrit.server.cache.h2.H2CacheFactory : Enabling disk cache /home/git/review_site/cache
Reindexing changes: done    
Reindexed 0 changes in 0.0s (0.0/s)
[2018-01-25 14:45:15,748] [DiskCache-Store-0] WARN  com.google.gerrit.server.cache.h2.H2CacheImpl : Cannot build BloomFilter for jdbc:h2:file:///home/git/review_site/cache/diff: Error opening database: "Sleep interrupted" [8000-176]
[2018-01-25 14:45:15,759] [main] INFO  com.google.gerrit.server.cache.h2.H2CacheFactory : Finishing 4 disk cache updates
[email protected]:~$ 
[email protected]:~$ review_site/bin/gerrit.sh start
Starting Gerrit Code Review: OK
至此解決問題。)
Gerrit重啟後,通過瀏覽器訪問 http://伺服器IP:8088/,登入gerrit。

以上gerrit環境搭建完畢,第一個登陸gerrit的使用者會預設時管理員,使用管理員賬戶登陸gerrit後可以在Projects項下面Create new project來建立新的git倉庫,
建立gerrit工程的時候可以使用/來規定子路徑工程,倉庫位置就在安裝配置gerrit的時候Location of Git repositories設定的路徑下面,建立完新的專案後,點選ssh,可以檢視到git clone的命令,不要使用http的git clone命令,可能會不好使,複製下來ssh命令後就可以用它進行程式碼下載了。下載下來git庫後可以將已有的程式碼拷貝到這個庫資料夾裡,然後:
$git add -f *
$git commit -m "Init codes"
$git push origin HEAD:refs/for/master

提交程式碼的時候如提示無changeid,解決方法為:

scp -p -P 29418 [email protected]:hooks/commit-msg .git/hooks/

123是客戶端電腦配置的git的name名稱,10.0.2.15是伺服器ip地址。

來初始化庫裡的程式碼,然後到網頁gerrit上來進行merge,到這裡程式碼庫已經基本初始化完成。

Gerrit的使用和常見錯誤(內網無法註冊郵箱等問題)
http://blog.csdn.net/enlangs/article/details/21237327


相關推薦

程式碼管理gerrit+git環境搭建

之前已經搭建過repo+git的倉庫管理,現在再整合一下gerrit。原料準備:1. jdk1.8環境 jdk-8u161-linux-x64.tar.gz2. gerrit安裝包 gerrit-2.12.war可能還需要:1. bcpkix-jdk15on-1.52.jar

git/repo/gerrit 本地環境搭建(一)

一、需求:本地構建git/repo/gerrit 開發環境 二、背景簡介: 1> git:一種分散式版本控制系統(DVCS) 2> repo:google 為便於管理 Android 專案數目眾多的 git repository 而開發的工具,是對git 命令

項目進階 集群環境搭建(一)概述

問題 特點 多臺 cpu 好的 content 成了 系統資源 通過 今天我們說一個不是特別新,但近期今年伴隨大數據熱而比較火的一個技術-集群技術。 什麽是集群技術 集群(Cluster)技術是指一組相互犭蟲立的計算機,利用快速通信網絡組

大數據測試hadoop單機環境搭建(超級詳細版)

com jvm 末尾 內容 取數 搭建 cluster replicat specific 友情提示:本文超級長,請備好瓜子 Hadoop的運行模式 單機模式是Hadoop的默認模式,在該模式下無需任何守護進程,所有程序都在單個JVM上運行,該模式主要用於開發和調試map

雲計算路-虛擬化環境搭建及虛擬機創建

home 應用虛擬化 鍵盤 參考 紅色 翻譯 靈活性 不能 ont 轉載自 靈躍雲 :原文鏈接 1. 前言 在計算機技術中,虛擬化(Virtualization)是一種資源管理技術,它將計算機相關的各種資源(CPU、內存、磁盤、網絡適配器等)進行抽象、轉換

ubuntu下零基礎建站python基礎環境搭建

而不是 -s AD 分享圖片 div -a 創建 9.png home 這篇說的是 ubuntu下 python 基礎環境 python2.7(為什麽是2.7而不是3? tornado 對2.7支持比較好,還有很多包也是支持2.7) 1. 輸入python 發現不存在 有p

Ubuntu 16.04系統 java開發環境搭建

nag AR con star inux username oca 生效 位操作 在Ubuntu 16.04(我的是64位操作系統)上搭建java開發環境: 事前準備:jdk、tomcat、eclipse、mysql jdk安裝配置: 我選擇的是jdk版本為1.8:安裝包位

第二周博客二-OA環境搭建

如果 local inf ins 顯示 gree oca info 文件夾 首先安裝jdk 選擇我接受,點擊下一步 路徑不需要改,裝在C盤就好,點擊下一步 點擊完成 接下來需要配置環境變量,右擊我的電腦 點擊環境變量 點擊系統變量的新建,變量名輸入JAVA_HO

【AR】Vuforiaunity3d 開發環境搭建

AR Vurforia 一、Unity3d環境搭建 下載安裝包地址:https://developer.vuforia.com/downloads/sdk Download for Android Download for iOS Download for UWP Download Unity Ext

開源專案學習------AG-Admin環境搭建

一、框架簡介 AG-Admin是基於Spring Cloud微服務化開發平臺,具有統一授權、認證後臺管理系統,其中包含具備使用者管理、資源許可權管理、閘道器API管理等多個模組,支援多業務系統並行開發,可以作為後端服務的開發腳手架。程式碼簡潔,架構清晰,適合學習和直接專

瞎折騰個人學習環境搭建(一):安裝XenServer

背景介紹 家裡只有一臺安裝WIN10的筆記本可供在下折騰,在下先安裝了個VMware® Workstation 12 Pro,計劃建立一臺虛擬機器安裝XenServer,再得用XenServer虛擬3臺Centos7,夠折騰的吧,其實如果僅虛擬Centos7,可以直接使用VMwar

Linux系列課程二基礎環境搭建

目錄 1.1    實驗環境介紹 1.1.1  vmware簡介 1.1.2  Linux的版本及centos簡介 1.2    搭建vmware虛擬機器 1.3    安裝centos6.5 1

SourceTree+Git環境搭建記錄

今天重新搭建了一下筆記本的git環境, 參考 SourceTree+Git簡單使用(Windows) 遇到問題: 1去官網下載對應三個安裝包,一路預設安裝 2遇到souretree需要註冊的問題 參考https://www.cnblogs.com/lucio110/p/819

揭祕騰訊程式碼管理核心—工蜂Git系統架構

騰訊工蜂Git ​ 引言: 近日,2018 DevOps China 沙龍在深圳騰訊大廈舉辦。本次沙龍邀請了多位嘉賓,分享了關於DevOps的實踐與心得。會上,騰訊高階工程師、工蜂系統架構負責人羅奇帶來“揭祕騰訊程式碼管理核心:工蜂 Git 系統架構”的經驗分

hadoop系列偽分散式環境搭建及測試驗證

Hadoop2.x 偽分散式環境搭建及測試驗證 作者:Dennis 日期:2018-08-09 前置條件: Linux 虛擬機器一臺,版本為 CentOS 7.4,假設 IP 地址為 192.168.159.181,並修改如下: 修改/etc/hostname 的

Hadoop系列完全分散式環境搭建及測試驗證

前置條件: 已製作好CentOS 虛擬機器模板。 該模板安裝好Oracle JDK,且 JAVA_HOME 值為/usr/java/jdk1.8.0_171-amd64/jre。 準備三臺虛擬機器 搭建完全 Hadoop 分散式最少需要三臺伺服器,假設三臺伺服器

Activiti工作流簡介與環境搭建

簡介 工作流: 業務過程的部分或整體在計算機應用環境下的自動化,使在多個參與者之間按照某種預定義的規則傳遞文件、資訊或任務的過程自動進行,從而實現某個預期的業務目標 工作流系統: 它是一個軟體系統,它完成工作量的定義和管理,並按照在系統中預先定義好的工作流規則進行工作流

FlutterWindows開發環境搭建

前言 RN出現時,沒有去詳細的學習。現在Flutter正式版出來了,好好的研究下。本文主要介紹在Windows環境下,搭建Flutter的各種坑。 開發環境 Windows 10 Android Studio 3.2.1 一加 5T 下載Flutter原始碼 主要參照Flutter

Go語言程式開發ARM開發環境搭建

參考文件 開發環境介紹 主機作業系統:Ubuntu14.04 64位 目標平臺:IMX.6 交叉工具鏈:arm-poky-linux-gnueabi,gcc4.8.2 Go版本:1.10.3 編譯時間:2018.8.27 編譯Go編譯器(Hos

大資料環境搭建Spark分散式環境搭建步驟詳解

文章目錄 環境準備 安裝配置 下載 配置環境變數 修改conf目錄下檔案 複製程式到從結點 啟動Spark叢集 在bigdata01機器上啟動Spark