Centos6.x下安装Gerrit

上一篇文章介绍了《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过来了)

扫描二维码关注公众号,回复: 1943637 查看本文章
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://[email protected]: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,就能看到刚安装的插件了。

参考

猜你喜欢

转载自blog.csdn.net/huanglin_developer/article/details/79297762