Gerrit审核流程管理系统搭建(Gerrit + H2 + Git + OpenDJ)

结构图

下面这张图是本文要安装的Gerrit审批流程系统结构图。其中H2为Gerrit自带的H2数据库,当然我们也可以选择MySQL等其他主流数据库,但都没有H2方便简单。OpenDJ为一种LDAP创建和管理工具。Gerrit也支持其他多种登录认证方式,本文选择LDAP认证。

安装过程

1. 安装CentOS操作系统。(CentOS-6.3-x86_64-LiveCD.iso   700+MB)  http://www.centos.org    CentOS实际上可以说是免费的RedHat发行版,它包含了大部分RedHat的内容,没有包含一些商业版的特殊功能。对于搭建Gerrit环境来说已经足够,所以我们毫不犹豫的选择了CentOS。P.S.:除特别说明,以下安装都用root操作即可。

2. 安装JRE。( jre-6u25-linux-x64-rpm.bin)  Gerrit是Java开源社区的优秀产品,因此要运行Gerrit,JRE是必须的。

#rpm -ivh jre-6u25-linux-x64-rpm.bin

3. 安装Git。http://www.git-scm.com   安装Git的时候遇到一个蛋疼的问题,官网主页居然被墙了。还好Linux命令行下面直接用以下命令安装。

#yum install git     (CentOS/Fedora)
#apt-get install git  (Debian/Ubuntu)

4. 安装OpenDJ。http://www.forgerock.org/opendj.html    选择RPM版,opendj-2.7.0-1.20130627.noarch.rpm。由于OpenDJ的RPM安装包有可能找不到JRE,所以我们加上了强制安装忽略依赖关系的参数(--nodeps –force)。

#rpm -ivh opendj-2.7.0-1.20130627.noarch.rpm --nodeps --force

5. 配置OpenDJ。
(1) 检查LDAP服务器状态。

#cd /opt/opendj/bin
#./status

如果服务器处于运行状态,请停止它。

#./stop-ds

(2) 执行OpenDJ配置程序。(此时会启动配置图形界面)

#cd /opt/opendj
#./setup

(3) 配置完成后,可以通过控制界面修改配置。

#cd /opt/opendj/bin
#./control-panel

6. 安装Gerrit。
(1) 下载Gerrit安装包(其实就是一个war包)。http://code.google.com/p/gerrit/

(2) 创建一个Gerrit用户。

#useradd gerrit
#passwd gerrit

(3) 切换到gerrit用户。执行

#su gerrit
#java -jar gerrit-2.5.4.war init -d /home/gerrit/review_site
(直接回车代表选择括号中的默认值)
Create ‘/home/gerrit/review_site’ [Y/n]?Y
Location of Git repositories  [git]:git
Database server type   [H2/?]:H2
Authentication method   [OPENID/?]:ldap
LDAP server   [ldap://localhost]: ldap://localhost  //LDAP所在的服务器地址或者域名    
LDAP username:
Account BaseDN: //根据LDAP配置填写
Group BaseDN: //根据LDAP配置填写
SMTP server hostname    [localhost]: smtp.163.com  //如果暂时没有可以不填写,安装完后可以在配置文件中修改
SMTP server port        [(default)]: 25
SMTP encryption         [NONE/?]: NONE
SMTP username       :  //邮箱帐号
Run as      [gerrit]:  
Java runtime    [/usr/java/jdk1.7.0_25/jre]:
Copy gerrit.war to /home/gerrit/review_site/bin/gerrit.war  [Y/n]?
SSH Listen on address    [*]:
SSH Listen on port  [29418]:
Gerrit Code review is not shipped with Bouncy Castle Cryto v144 … …
Download and install it now [Y/n]? Y
Behind reverse proxy     [y/N]? N
Use SSL (https://)      [y/N]? N
Listen on address     [*]:
Listen on port    [8080]:
Prompt to install core plugins  [y/N]?

(4) 配置完成后的/home/gerrit/review_site/etc/gerrit.config应该是下面这样的。如果没有canonicalWebUrl,请自行添加。

[gerrit]
	basePath = git
	canonicalWebUrl = http://localhost:8080/
        //canonicalWebUrl在LDAP验证成功后跳转时需要用到,因此必须配置成客户端(Web端)可以访问的域名或IP
[database]
	type = H2
	database = db/ReviewDB
[auth]
	type = LDAP
[ldap]
	server = ldap://ldap.amc.com
	accountBase = DC=amc,DC=com
	groupBase = DC=amc,DC=com
[sendemail]
	smtpServer = smtp.163.com
	smtpServerPort = 25
	smtpUser = ******
[container]
	user = gerrit
	javaHome = /usr/java/jdk1.7.0_25/jre
[sshd]
	listenAddress = *:29418
[httpd]
	listenUrl = http://*:8080/
[cache]
	directory = cache

(5) 由于CentOS默认的防火墙没有打开8080和29418端口,因此,需要修改防火墙规则。

#iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
#iptables -I INPUT -p tcp --dport 29418 -j ACCEPT
#/etc/rc.d/init.d/iptables save
#iptables -L -n   查看规则是否添加成功
如果想要删除某条规则:
#iptables –L –n –-line-numbers
#iptables –D INPUT 1 根据需要删除某行(这里删除第一行)

(6) 开启和停止Gerrit服务器,用gerrit用户操作。

#cd /home/gerrit/review_site/bin
#./gerrit.sh start
#./gerrit.sh stop

如果出现错误:** ERROR: GERRIT_SITE not set。请修改gerrit.sh,增加下面这行:

###################
# Get the action and options
###################
GERRIT_SITE=/home/gerrit/review_site

7. Gerrit初始配置。
(1) 登录Gerrit网页。第一个login的用户将成为超级管理员。在此之前别忘记在OpenDJ中新建超级管理员账号。我们这里创建了Administrator的账号。

(2) 登录之后需要填写一些注册信息。Gerrit会将LDAP中的用户名和邮箱信息映射过来,因此无需再填写。

(3) 填写SSH Public Key。由于Administrator账号只负责管理Gerrit,一般无需上传代码或者审核代码,我们建议不输入SSH Public Key。但请注意,其他用户都需要输入SSH Public Key,否则无法正常上传和下载代码。

(4) 单击“Projects”,选择“Create New Project”,创建一个示例项目。例如:MyProject。P.S.:这时如果到/home/gerrit/review_site/git目录中,你将会看到一个名为MyProject.git的目录。这就是刚才创建的示例项目。

8. 远程Clone代码。
(1) 如果你使用的是windows系统,请安装msysgit。在Git Bash命令行环境中进行以下操作。

(2) 在本机(客户端)创建SSH证书。

# ssh-keygen -t rsa –C “[email protected]”
 Generating public/private rsa key pair.
 Enter file in which to save the key (/home/user/.ssh/id_rsa): 
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/ user /.ssh/id_rsa.
 Your public key has been saved in /home/ user /.ssh/id_rsa.pub.

(3) 在Gerrit服务器的LDAP中创建user1用户,并设置密码和邮箱。

/opt/opendj/bin/control-panel   //启动控制面板图形界面

(4) 在本机以user1登录Gerrit网页。

(5) 填写SSH Public Key。即第一步中生成的id_rsa.pub中的全部内容。

(6) 测试SSH是否成功。

#ssh -p 29418 user1@Gerrit服务器的IP或者域名

如果出现下面的提示,表示连接成功:

**** Welcome to Gerrit Code Review **** 
Hi user1, you have successfully connected over SSH. 
Unfortunately, interactive shells are disabled. 
To clone a hosted Git repository, use: git clone ssh://user1@localhost:29418/REPOSITORY_NAME.git
Connection to localhost closed.

(7) Clone远程代码。

# git clone ssh://user1@Gerrit服务器的IP或者域名:29418/MyProject.git

至此,安装完成,可以开始认真学习Gerrit的使用和流程控制内容了。

Gerrit初始设置

这里先建立4个账号用作流程演示,它们分别为:
GerritAdmin 管理员账号,即第一个登录进Gerrit系统的账号。
Reviewer1、Reviewer2审核人账号。
Submitter提交者账号。

服务器端设置:

1. 创建Reviewer组和Verifier组。

Reviewer:Reviewer1、Reviewer2

Verifier:GerritAdmin

2. 创建项目ExampleProject。

Gerrit审核流程管理系统搭建(Gerrit + H2 + Git + OpenDJ)_第1张图片

3. 配置项目参数。设置的其实是All-Projects的属性,这样以后创建的所有Project都具有这些属性。

服务器端设置:

1. 设置hooks脚本。Gerrit为了避免一个change被打回来修改后再被当作新的change提交,提供了相应的hook脚本。

# scp -P 29418 -p username@gerrit_server:/hooks/commit-msg .git/hooks

2. 创建Push别名。Gerrit不允许用户直接向ref/heades/master推送,任何提交都必须先提交到refs/for/master等待审核。因此需要使用git push origin HEAD:refs/for/master来提交。下面为这一命令设置一个别名。设置完之后,就可以用git push review推送更新了。

# vi .git/config
[remote "review"] 
        pushurl = ssh://username@gerrit_server:29418/ExampleProject.git
        push = HEAD:refs/for/master

 

你可能感兴趣的:(Gerrit审核流程管理系统搭建(Gerrit + H2 + Git + OpenDJ))