上一篇文章介绍了《Ubuntu下搭建本地Gerrit代码审核服务器》
这篇文章介绍下怎么在Centos上搭建Gerrit,两者的主要区别在于一些配置项。
- 需要准备的软件
- 安装git
- 安装jdk
- 安装apach2
- 安装gerrit
- 配置
- 验证
- 创建第一个项目
- 插件扩展
需要准备的软件
- git
- jdk
- apache2
- gerrit
安装git
yum install git
安装jdk
1.下载
http://www.oracle.com/technetwork/java/javase/downloads/index.html
我下载的是Java SE Development Kit 8u151这个包,最好不要下1.6及以下,最新的gerrit包对jdk的版本有要求,可能会出现兼容性问题。
2.安装
在/usr/ 目录下新建一个java文件夹,将下载好的jdk移动到/usr/java下。
解压:tar -zxvf jdk-**.tar.gz
解压完成后删除jdk的安装包
3.配置环境变量
(1)在终端中输入命令
sudo gedit /etc/profile
(2)在文件末尾加入
JAVA_HOME=/usr/java/jdk1.8.0_152
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
(3)保存退出后,执行下面命令,让profile文件生效
source /etc/profile
(4)验证是否安装成功
java -version
安装apache2
apache2服务器是用来做反向代理用的。由于使用我们后面在安装Gerrit时选择的认证方式为http,需要用apache2来做一个反向代理。
1. 安装apache2
yum install -y httpd
2.验证是否安装成功
service httpd start
如果出现下面的提示,说明以已经安装启动成功。
Starting httpd: [ OK ]
安装gerrit
如果要去gerrit官网下安装包,是需要fq的,我下载了一个最新的包放在github上,有需要的同学自行下载:
(这一步和Ubuntu环境一致,所以直接copy过来了)
https://github.com/miguoer/software/blob/master/gerrit/gerrit-2.14.6.war
下面开始安装。你可以创建一个单独的账户来安装gerrit,也可以直接在当前用户环境下安装。我选择的是就在当前用户环境下安装。
选择自己专门放安装软件的目录,将下载好的war包复制进去,然后执行
java -jar gerrit-2.14.6.war init -d review_site
review_site是安装后文件目录名。
执行完这行命令,会出现安装提示:
huanglin@huanglin:~/Software$ java -jar gerrit-2.14.6.war init -d test
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore
[2017-12-06 16:34:16,022] [main] INFO com.google.gerrit.server.config.GerritServerConfigProvider : No /home/huanglin/Software/test/etc/gerrit.config; assuming defaults
*** Gerrit Code Review 2.14.6
***
Create '/home/huanglin/Software/test' [Y/n]? y
*** Git Repositories
***
Location of Git repositories [git]:
*** SQL Database
***
Database server type [h2]:
*** Index
***
Type [lucene/?]:
*** User Authentication
***
Authentication method [openid/?]: http(选择http的认证方式,避免使用默认openid,需要fq的)
Get username from custom HTTP header [y/N]?
SSO logout URL :
Enable signed push support [y/N]?
*** Review Labels
***
Install Verified label [y/N]? y(这里写y,方便后续使用Jenkins做持续集成)
*** Email Delivery
***
SMTP server hostname [localhost]:
SMTP server port [(default)]:
SMTP encryption [none/?]:
SMTP username :
*** Container Process
***
Run as [huanglin]:
Java runtime [/usr/java/jdk1.8.0_152/jre]:
Copy gerrit-2.14.6.war to test/bin/gerrit.war [Y/n]?
Copying gerrit-2.14.6.war to test/bin/gerrit.war
*** SSH Daemon
***
Listen on address [*]:
Listen on port [29418]:
Generating SSH host key ... rsa... dsa... ed25519... ecdsa 256... ecdsa 384... ecdsa 521... done
*** HTTP Daemon
***
Behind reverse proxy [y/N]? y
Proxy uses SSL (https://) [y/N]?
Subdirectory on proxy server [/]:
Listen on address [*]:
Listen on port [8081]:
Canonical URL [http://huanglin/]:
*** Cache
***
*** Plugins
***
***注意这些插件最好都行选择安装,以防后续需要用到的时候没有,还要手动安装。
Installing plugins.
Install plugin commit-message-length-validator version v2.14.6 [y/N]? y
Installed commit-message-length-validator v2.14.6
Install plugin download-commands version v2.14.6 [y/N]? y
Installed download-commands v2.14.6
Install plugin hooks version v2.14.6 [y/N]?
...后面的插件也一直填 y ,按enter执行下一步
配置
1.修改review_site/etc/ 下的gerrit.config文件 。把canonicalWebUrl配置为本地服务器(这里就是我的电脑)IP。listenUrl为代理服务器的IP,此处端口配置为了8888。
[gerrit]
basePath = git
serverId = 6ae95b16-d269-480e-9319-0be348717a1b
canonicalWebUrl = http://localhost:8888/
[database]
type = h2
database = /home/huanglin/Software/review_site/db/ReviewDB
[index]
type = LUCENE
[auth]
type = HTTP
[receive]
enableSignedPush = true
[sendemail]
smtpServer = smtp.163.com
smtpServerPort = 465
smtpEncryption = ssl
smtpUser = *******@163.com
smtpPass = 你的邮箱密码
sslVerify = false
from=CodeReview<*******@163.com>
[container]
user = huanglin
javaHome = /usr/java/jdk1.8.0_152/jre
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = http://*:8888/
[cache]
directory = cache
2.添加gerrit用户
(1)在任意目录(我的是/home/software/gerrit/review_site/)下创建一个保存密码的文件
$ cd /home/software/gerrit/review_site/
$ touch pwd
(2)添加用户名密码
$ htpasswd -b pwd admin ******
第一个登录gerrit的用户将自动作为管理员账户。
3.配置Apache2反向代理
(1)进入apache2目录
cd /etc/httpd/conf/
(2)修改httpd.conf文件,添加了对8090端口的监听。这个端口是后续在浏览器中访问gerrit时输入的端口。前面的8888端口是实际访问的端口。
Listen 80
Listen 8091
(3)修改/etc/httpd/conf.d/目录下的gerrit.conf文件
$ vi /etc/httpd/conf.d/gerrit.conf
然后把下面的代码添加到gerrit.conf中,当用户访问localhost:8090时,会被代理到http://localhost:8888/。这个8888端口必须和前面gerrit.conf中配置的代理服务器的端口一致。
AuthUserFile 为上面创建的用于保存gerrit用户密码的文件。
ServerName localhost
<VirtualHost *:8090>
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
AllowEncodedSlashes On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location /login/>
AuthType Basic
AuthName "Gerrit Code Review"
AuthBasicProvider file
AuthUserFile /home/software/gerrit/review_site/pwd
Require valid-user
</Location>
ProxyPass / http://localhost:8888/
</VirtualHost>
验证
完成以上步骤之后,基本上就大功告成了。下面我们来验证下是否成功。
1. 重启Gerrit服务和Apache2服务
$ /home/software/gerrit/review_site/bin/gerrit.sh restart
$ service httpd start
2.打开浏览器,输入http://localhost:8090/。这时如果出现提示输入用户名密码的窗口,就说明搭建成功了。
创建第一个项目
配置gerrit
- 添加ssh的公钥
本地打开终端,输入命令
ssh-keygen
公钥默认保存的地址为home目录下的 .ssh.id_rsa
打开~./.ssh/id_rsa.pub,把里面的内容复制到gerrit/settings/SSH Public Key里面。
- 进入Projects,点击Create New Project,务必勾选
Create initial empty commit
否则拉代码时会有问题。 项目创建好之后,进入项目页,点击刚创建的项目,就有clone地址。通过这个地址就可以拉代码到本地了。
提交代码:当本地代码有修改后,请执行一下提交流程。
//
$ git add .
//本地commit
$ git commit -m "commit msg"
//合并服务器代码,可以选择合并的分支,这里是合并master分支
$ git rebase origin/master
//push 代码到服务器
$ git push origin HEAD:refs/for/master
注意:
如果是第一次push代码,可能会报错
remote: Processing changes: refs: 1, done
remote: ERROR: [4a91168] missing Change-Id in commit message footer
remote:
remote: Hint: To automatically insert Change-Id, install the hook:
remote: gitdir=$(git rev-parse --git-dir); scp -p -P 29418 huanglin@192.168.0.221:hooks/commit-msg ${gitdir}/hooks/
remote: And then amend the commit:
remote: git commit --amend
remote:
To ssh://huanglin@192.168.0.221:29418/testdddddd
! [remote rejected] HEAD -> refs/for/master ([4a91168] missing Change-Id in commit message footer)
这个时候只需要把报错信息中如下内容复制到终端,按回车键。再执行 git commit –amend。然后重新push就大功告成了。
gitdir=$(git rev-parse --git-dir); scp -p -P 29418 huanglin@192.168.0.221:hooks/commit-msg ${gitdir}/hooks/
插件扩展
默认安装的gerrit可能功能并不是很完整,我在安装完默认所有的插件之后,发现gerrit操作页面上没有删除项目的选项,一番搜索之后原来是需要安装一个delete-project的插件。所以如果大家需要扩展什么功能,要下插件的话,这里也分享一个插件下载的网站
https://gerrit-ci.gerritforge.com/view/Plugins-stable-2.13/
1.下载插件
2.将下载好的插件放在安装目录下的plugins文件夹下面
3.重启gerrit服务,从浏览器重新进去,点击plugins/installed,就能看到刚安装的插件了。