Gerrit服务器的搭建(Git+Gerrit+PostgreSQL+LDAP)

Gerrit简介

Gerrit是搭建在Git之上的基于Web的代码审查工具。大家都知道Git是一个分布式的代码版本管理工具,常用于多人协作开发的工作环境中,程序员将自己修改的代码提交到本地版本库,然后再push到远程的中央版本库中,见图1。这个过程中,代码的提交是没有经过审核的,对于分布在多个地点的团队来说,不能互相审查、评论其他人的代码,非常不利于代码质量的控制。而Gerrit就是用来进行代码审查的工具,程序员push到中央版本库的代码,首先要经过团队中Reviewers的审查,被接受后才会真正提交到版本库中,见图2。


Gerrit服务器的搭建(Git+Gerrit+PostgreSQL+LDAP)

1 总览

操作系统Ubuntu,需要安装

  • Git,代码版本管理
  • Java,最低1.7版本,Gerrit安装包是个war包
  • 数据库,Gerrit支持H2(内置) / MySQL / PostgreSQL,本安装选择PostgreSQL,完全开源且适合大规模数据的部署
  • 身份认证,审核的前提是做身份认证来登陆Web,Gerrit支持OpenID / HTTP / LDAP,本安装选择已经搭建好的LDAP,但会讲解HTTP方式的认证,需要Apache做反向代理

2 Git安装

sudo apt-get install git

3 JDK8安装

Ubuntu14.10及以上版本的Ubuntu官方软件中心里有OpenJDK java 8,可以直接用apt-get安装,低版本得从PPA(Personal Package Archives 个人软件包集)中安装。

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk

配置Java环境变量

  • PATH,指定命令搜索路径,在shell下执行命令时,会到PATH变量指定的路径中查找相应命令程序,如java/javac
  • CLASSPATH,指定类搜索路径,JVM通过它寻找类
  • JAVA_HOME,其他软件通过它找到jdk的安装目录
vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_21
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
source /etc/profile
java -version

如果安装了多个jdk,就选择一个默认的

sudo update-alternatives --config java
sudo update-alternatives --config java

4 PostgreSQL安装

sudo apt-get install postgresql

初次安装后,会默认生成名为postgres的Linux系统用户、数据库和数据库用户(作为数据库管理员),首先修改postgres数据库用户的密码,然后增加Gerrit需要的数据库

sudo -u postgres psql
postgres=# \password postgres
(input password twice)
postgres=# \q
sudo -u postgres createuser -RDIElPS gerrit2
sudo -u postgres psql
postgres=# \password gerrit2
(input password twice)
sudo -u postgres createdb -E UTF-8 -O gerrit2 reviewdb

5 Gerrit安装

从官网下载Gerrit的安装包,为了方便改名为gerrit.war,建议创建一个Linux用户来安装,本人安装在gerrit2用户的review_site目录下

sudo adduser gerrit2
sudo su gerrit2
java -jar gerrit.war init -d /home/gerrit2/review_site

然后就会进行很多配置,大部分默认即可,要注意的是数据库和身份认证,这些配置也可以在安装完成后在~/review_site/etc/gerrit.config文件中修改。

以下是别人的配置,他是用MySQL+Nginx做HTTP认证,这里贴出来只是让大家看下大概的安装步骤,仅供参考:

# java -jar gerrit-2.8.war init -d /etc/gerrit/

*** Gerrit Code Review 2.8
***

Create ‘/etc/gerrit‘           [Y/n]? y

*** 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]? y
Downloading http://repo2.maven.org/maven2/mysql/mysql-connector-java/5.1.21/mysql-connector-java-5.1.21.jar ... OK
Checksum mysql-connector-java-5.1.21.jar OK
Server hostname                [localhost]:
Server port                    [(mysql default)]:
Database name                  [reviewdb]: gerritdb
Database username              [root]: gerrituser
gerrituser‘s password          :
              confirm password :

*** User Authentication
***

Authentication method          [OPENID/?]: http
Get username from custom HTTP header [y/N]? n
SSO logout URL                 :

*** Email Delivery
***

SMTP server hostname           [localhost]: smtp.googlemail.com
SMTP server port               [(default)]: 587
SMTP encryption                [NONE/?]: tls
SMTP username                  [root]: [email protected]
[email protected]‘s password  :
              confirm password :

*** Container Process
***

Run as                         [root]:
Java runtime                   [/usr/lib/jvm/java-6-openjdk-amd64/jre]:
Copy gerrit-2.8.war to /etc/gerrit/bin/gerrit.war [Y/n]? y
Copying gerrit-2.8.war to /etc/gerrit/bin/gerrit.war

*** SSH Daemon
***

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

Gerrit Code Review is not shipped with Bouncy Castle Crypto v144
  If available, Gerrit can take advantage of features
  in the library, but will also function without it.
Download and install it now [Y/n]? y
Downloading http://www.bouncycastle.org/download/bcprov-jdk16-144.jar ... OK
Checksum bcprov-jdk16-144.jar OK
Generating SSH host key ... rsa... dsa... done

*** HTTP Daemon
***

Behind reverse proxy           [y/N]? y
Proxy uses SSL (https://)      [y/N]? n
Subdirectory on proxy server   [/]:
Listen on address              [*]:
Listen on port                 [8081]: 8082
Canonical URL                  [http://www.thstack.com/]: http://review.thstack.com/

*** Plugins
***

Install plugin reviewnotes version v2.8 [y/N]? y
Install plugin download-commands version v2.8 [y/N]? y
Install plugin replication version v2.8 [y/N]? y
Install plugin commit-message-length-validator version v2.8 [y/N]? y

Initialized /etc/gerrit
Executing /etc/gerrit/bin/gerrit.sh start
Starting Gerrit Code Review: OK
Waiting for server on review.thstack.com:80 ... OK
Opening http://review.thstack.com/#/admin/projects/ ...FAILED
Open Gerrit with a JavaScript capable browser:

http://review.thstack.com/#/admin/projects/

我试过用Apache做反向代理,需要配置不过配置~/review_site/etc/gerrit.config还有/etc/apache2/httpd.conf,还是有点问题,总是报Authorization header的错误,最后选择了LDAP认证,LDAP服务器是公司已经搭好的,直接用了。

最后,我的~/review_site/etc/gerrit.config如下:

[gerrit]
        basePath = git
        canonicalWebUrl = https://localhost:8080
[database]
        type = postgresql
        hostname = localhost
        database = reviewdb
        username = gerrit2
[auth]
        type = LDAP
[ldap]
        server = ldaps://xx:xx
        accountBase = xx
        accountPattern = (&(objectClass=person)(uid=${username}))
        accountFullName = cn
        accountEmailAddress = mail
        accountSshUserName = uid
        referral = follow
        groupBase = xx
        groupScope = one
[sendemail]
        smtpServer = localhost
        from = ${user} [review] <[email protected]>
[container]
        user = gerrit
        javaHome = /usr/lib/jvm/java-8-openjdk-amd64/jre
[sshd]
        listenAddress = *:29418
[download]
        scheme = ssh
        scheme = http
[httpd]
        listenUrl = proxy-http://localhost:8080
[cache]
        directory = cache
[http]
        proxy = http://xx:xx
[gitweb]
        cgi = /usr/lib/cgi-bin/gitweb.cgi
[cache "web_sessions"]
       maxAge = 1 month

配置好后,启动Gerrit,需要用绝对路径

/home/gerrit2/review_site/bin/gerrit.sh start

在浏览器输入 http://localhost:8080 弹出Gerrit的页面,终于成功了!

时间: 2024-10-06 13:51:47

Gerrit服务器的搭建(Git+Gerrit+PostgreSQL+LDAP)的相关文章

服务器上的 Git - 在服务器上搭建 Git

http://git-scm.com/book/zh/v2/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E5%9C%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E6%90%AD%E5%BB%BA-Git 在服务器上搭建 Git 现在我们将讨论如何在你自己的服务器上搭建 Git 服务来运行这些协议. NOTE 这里我们将要演示在 Linux 服务器上进行一次基本且简化的安装所需的命令与步骤,当然在 Mac

如何在服务器上搭建git服务及上传本地代码

1. 在云服务器上搭建git服务 https://www.cnblogs.com/ucos/p/3924720.html 这篇文章已经详细的介绍了如何配置和安装 但是文章略微有点老 在配置环节稍微有点不一样 配置完 参照教程 就可以运行 2.创建远程库 3.添加用户 4.添加完用户后 该用户可以在本地clone该库 5.将代码复制到文件夹下 并提交推送 代码就上传到远程库里了 6.如何切出一个分支 在本地新建一个分支 然后推到服务端 点击分支可以在服务端删除掉远程分支 原文地址:https://

如何在服务器上搭建git服务器

参考文章: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000 http://wlog.cn/soft/git-ssh-server-for-debian.html 在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改. GitHub就

搭建服务器上的GIT并实现自动同步到站点目录(www)

原文链接:http://blog.csdn.net/baidu_30000217/article/details/51327289  方便自己记住使用 前言:当我们想要实现几个小伙伴合作开发同一个项目,或者建立一个资源分享平台的时候,GIT就是一个很好的选择.当然,既然是一个共有平台,那么把这个平台放到个人计算机上明显是不合适的,因此就要在服务器上搭建GIT了.另一个需求是,我们在本地开发,然后推送到服务器上,并且自动同步到web站点目录,这样就可以直接看到网页效果了,这就要实现自动同步.下面我

CENTOS下搭建git代码仓库 ssh协议

centos服务器下搭建git仓库,使用ssh协议管理仓库代码权限    git官网(http://git-scm.com/) 使用ssh协议: 一.安装git,使用yum install git 或者使用 源码包安装git-2.2.0.tar.gz(https://www.kernel.org/pub/software/scm/git/) 新建git用户与用户组 # useradd git # passwd git 二,新建git仓库(仓库位置自己随用户自己决定,例/var/git/testp

centos上搭建git服务--3

前言:当我们想要实现几个小伙伴合作开发同一个项目,或者建立一个资源分享平台的时候,GIT就是一个很好的选择.当然,既然是一个共有平台,那么把这个平台放到个人计算机上明显是不合适的,因此就要在服务器上搭建GIT了.另一个需求是,我们在本地开发,然后推送到服务器上,并且自动同步到web站点目录,这样就可以直接看到网页效果了,这就要实现自动同步.下面我带领大家实现这么一个功能. 如果条件允许的话,大家可以跟着做的(注:我的服务器是centos 7,lamp环境). 一.在服务器上安装git: //yu

[Gerrit服务器集群搭建(一)]初识Gerrit代码审查系统

一.写在前面 公司安卓部门在扩张,尤其是我们这一拨新人进来后,本来负载就很重的Gerrit服务器更加吃不消了.前段时间,我有幸全程参与搭建了Gerrit服务器集群,在这里也将搭建过程总结记录下来,给自己也给他人做一个参考,有误或者有更好的建议都期待指教~ 二.Gerrit服务器简介 简言之,就是基于Git引入的强制代码审核机制,原来是git push->Git库,现在则变成了git push->Gerrit(代码管理者审核通过)->Git库.当然这是个不严谨的描述,较为详细的介绍请参见h

Git+Gerrit学习搭建笔记

    Git是目前最流行的分布式版本控制系统,而Gerrit是一种免费.开放源代码的代码审查软件,使用网页界面.利用浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改.它使用Git作为底层版本控制系统.趁着做测试的机会,简单学习了解一下Git+Gerrit是如何搭建使用的,顺便简单做个小笔记.      系统环境:Ubuntu12.04 Server 64 安装Git $sudo su -           ##切换到root账户环境下(个人

[Gerrit服务器集群搭建(三)] 服务器搭建问题小结

一.写在前面 这一篇是对搭建Gerrit集群环境时遇到的问题及解决方案的小结.不谈细节,我们搭建这个集群需要达到的最直接效果是:用户访问且仅访问一个Gerrit服务器地址,集群内任意服务器都有能力响应.这里说的“有能力”,由SSH传输协议展开. 二.集群服务器共享用户公钥 用户如果需要从Gerrit服务器上通过ssh协议下载数据,首先会在服务器上增加自己的公钥,从而让服务器在用户请求通信时向用户发送“质询”,验证用户身份.(更详细的说明在这:http://www.cnblogs.com/wina