Gerrit的基本介绍
Gerrit 是一个Git服务器,它基于 git 版本控制系统,使用网页界面来进行审阅工作。Gerrit 旨在提供一个轻量级框架,用于在代码入库之前对每个提交进行审阅,更改将上载到 Gerrit,但实际上并不成为项目的一部分,直到它们被审阅和接受 。代码审查是Gerrit的核心功能,但仍是可选的,团队可以决定不进行代码审查而工作。
Gerrit 是一个临时区域, 在提交的代码成为代码库的一部分之前, 可以对其修改进行检查。代码修改的作者将提交作为对 Gerrit 的更改。在Gerrit中,每个更改都存储在暂存区域中,可以在其中进行检查和查看。仅当它被批准并提交时,它才被应用到代码库中。
其实,Gerrit 就相当于是在开发员将本地修改提交到代码仓库之前的一个审核工具。在这个审核工具中,你可以查看该提交者在本次的的提交中的修改,然后再决定是否可以将该修改提交给仓库。
1. 前期准备
1.1. Jdk安装
下载网址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- 上传jdk文件夹 cd /usr/local rz jdk-1.8.0_11
- 添加环境变量vim /etc/profile 添加如下内容:JAVA_HOME根据实际目录来
- JAVA_HOME=/usr/local/jdk1.8.0_11
- CLASSPATH=$JAVA_HOME/lib/
- PATH=$PATH:$JAVA_HOME/bin
- export PATH JAVA_HOME CLASSPATH
- 执行source /etc/profile刷新环境变量
- 查看版本 java -version
1.2. Git安装
提示:建议不要用yum -y install git的方式安装git,这样安装的git版本过低,在与gerrit集成过程中可能会出问题,如果已经安装建议卸载重新安装
- 安装git依赖包:yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
- 新建 git目录,cd /usr/bin/;mkdir git
- 下载wget工具,已有的机器可以不用下载:yum -y install git
- 下载git安装包 下载地址:wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.12.2.tar.gz
- 解压git,tar -xzvf **.tar.gz
- 进入 解压目录 安装git:make prefix=/usr/bin/git all make prefix=/usr/bin/git install
- 配置环境变量 vim /etc/profile,export PATH=/usr/bin/git/bin:$PATH,刷新环境变量让他生效 source /etc/profile ;
- 查看安装是否成功 git -version
- 生成秘钥:ssh-keygen,一直回车直到生成
进入到秘钥界面将公钥拷贝给运维添加到gitlab上,cd /root/.ssh(还没有搭建gitlab的忽略)
配置git
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global color.ui true 设置语法高亮
1.3. Nginx安装
1.3.1. 下载Nginx及相关组件
Linux系统是Centos 6.5 64位,我直接切换到root用户下安装
进入用户目录下载程序
下载相关组件
[root@localhost src]# wget http://nginx.org/download/nginx-1.10.2.tar.gz
省略安装内容...
[root@localhost src]# wget http://www.openssl.org/source/openssl-fips-2.0.10.tar.gz
省略安装内容...
[root@localhost src]# wget http://zlib.net/zlib-1.2.11.tar.gz
省略安装内容...
安装c++编译环境,如已安装可略过
[root@localhost src]# yum install gcc-c++
省略安装内容...
期间会有确认提示输入y回车
Is this ok [y/N]:y
省略安装内容...
1.3.2. 安装Nginx及相关组件
openssl安装:
[root@localhost src]# tar zxvf openssl-fips-2.0.10.tar.gz
省略安装内容...
[root@localhost src]# cd openssl-fips-2.0.10
[root@localhost openssl-fips-2.0.10]# ./config && make && make install
省略安装内容...
pcre安装
[root@localhost src]# yum install pcre pcre-devel
省略安装内容...
zlib安装
[root@localhost src]# tar zxvf zlib-1.2.11.tar.gz
省略安装内容...
[root@localhost src]# cd zlib-1.2.11
[root@localhost zlib-1.2.11]# ./configure && make && make install
省略安装内容...
nginx安装
[root@localhost src]# tar zxvf nginx-1.10.2.tar.gz
省略安装内容...
[root@localhost src]# cd nginx-1.10.2
[root@localhost nginx-1.10.2]# ./configure && make && make install
省略安装内容...
1.3.3. 启动Nginx
先找一下nginx安装到什么位置上了
进入nginx目录并启动
进入浏览器,输入服务器IP会看到下图,说明nginx启动成功
1.4. htpasswd管理工具安装
htpasswd是Apache的Web服务器内置的工具,用于创建和更新储存用户名和用户基本认证的密码文件。由于该工具是Apache的Web服务器内置的工具,所以直接安装Apache,在对应的bin目录下可以看到该命令。还可以直接安装httpd-tools这个工具包,比如:yum install httpd-tools
安装:yum install httpd-tools
中途会有个提示是否继续,直接回车就可以了
2. Gerrit环境部署
2.1. 下载gerrit
在官方下载最新的Gerrit版本,本文中的版本为3.13
下载地址:https://www.gerritcodereview.com/
2.2. 安装gerrit
1、新建一个gerrit目录并上传安装包
mkdir gerrit
cd gerrit
rz
开始安装gerrit
[root@localhost gerrit]# java -jar gerrit-3.1.3.war init -d review_site
根据提示一步步安装gerrit
*** Gerrit Code Review 3.1.3
***
Create '/usr/local/src/gerrit/review_site' [Y/n]? y
#程序会自动创建该文件,必须输入”Y“,如果输入"N"则程序会退出,默认就是"Y",因此我们直接回车应该也可以的
*** Git Repositories
***
Location of Git repositories [git]:/data/gerrit/repository
#指定Git存储库,最好指定一个不存在的目录,他会自动创建。
*** Index***
Type [lucene/?]:
#默认即可。
*** User Authentication***
Authentication method [openid/?]: HTTP
#认证方法输入HTTP,我们要使用反向代理
Get username from custom HTTP header [y/N]? n
#询问咱们是否从自定义HTTP头获取用户名,我们输入”n“
SSO logout URL :
Enable signed push support [y/N]? y
#启用签名的推送支持
*** Review Labels***
Install Verified label [y/N]?
#安装已验证标签,默认即可。
SMTP server hostname [localhost]: smtp.exmail.qq.com
#输入自动发送邮件的smtp服务器,这里我们用的是腾讯企业邮箱
SMTP server port [(default)]: 465
#465/994时SSL协议端口后,25是非SSL协议端口号
SMTP encryption [none/?]: SSL
#如果上一步输入的是465/994,此处输入SSL,否则直接回车即可
SMTP username [root]: jsyfzxqa@corp.to8to.com
#此处是你定义自动发送邮件的邮箱地址
jsyfzxqa@corp.to8to.com's password :
#接着我们需要输入2次咱们邮箱的授权码。
confirm password :
Run as [root]: #指定容器运行的进程用户,默认为root用户,我们默认即可
Java runtime [/yinzhengjie/softwares/jdk1.8.0_201/jre]:
#JAVA的运行环境。如果它识别的有误,你可以指定你服务器的环境
Copy gerrit-3.1.3.war to review_site/bin/gerrit.war [Y/n]? y
#拷贝gerri安装包
Copy gerrit-3.1.3.war to review_site/bin/gerrit.war
*** SSH Daemon***
Listen on address [*]: n
#指定SSH后台服务的监听地址
Listen on port [29418]:
#指定SSH后台服务的端口号
Generating SSH host key ... rsa... ed25519... ecdsa 256... ecdsa 384... ecdsa 521... done
*** HTTP Daemon***
Behind reverse proxy [y/N]? y
#使用发向代理
Proxy uses SSL (https://) [y/N]? n
#不适用SSL
Subdirectory on proxy server [/]:
#指定代理服务器的子目录,默认为"/"路径,默认即可
Listen on address [*]:
#只当gerrit服务的监听地址
Listen on port [8081]: 8888
#指定gerrit的服务端口
Canonical URL [[http://localhost/]:
#指定标准连接,咱们默认即可
*** Cache***
1、安装插件,全部手动输入y,然后回车
*** Plugins***
Installing plugins.
Install plugin codemirror-editor version v3.0.0 [y/N]? y
#接下来就是询问我们是否安装插件,我们一路”y“ 即可~
Installed codemirror-editor v3.0.0
Install plugin commit-message-length-validator version v3.0.0 [y/N]? y
Installed commit-message-length-validator v3.0.0
Install plugin delete-project version v3.0.0 [y/N]? y
Installed delete-project v3.0.0
Install plugin download-commands version v3.0.0 [y/N]? y
Installed download-commands v3.0.0
Install plugin gitiles version v3.0.0 [y/N]? y
Installed gitiles v3.0.0
Install plugin hooks version v3.0.0 [y/N]? y
Installed hooks v3.0.0
Install plugin plugin-manager version v3.0.0 [y/N]? y
Installed plugin-manager v3.0.0
Install plugin replication version v3.0.0 [y/N]? y
Installed replication v3.0.0
Install plugin reviewnotes version v3.0.0 [y/N]? y
Installed reviewnotes v3.0.0
Install plugin singleusergroup version v3.0.0 [y/N]? y
Installed singleusergroup v3.0.0
Install plugin webhooks version v3.0.0 [y/N]? y
Installed webhooks v3.0.0
Initializing plugins.
Initialized /root/review_site
Reindexing projects: 100% (2/2) with: reindex --site-path review_site --threads 1 --index projects
Reindexed 2 documents in projects index in 0.3s (6.1/s)
Executing /root/review_site/bin/gerrit.sh start
Starting Gerrit Code Review: OK
Waiting for server on node108.yinzhengjie.org.cn:80 ... OK
Opening http://node108.yinzhengjie.org.cn/#/admin/projects/ ...FAILED #一开始这里有个FAILED,让我耿耿于怀,后来发现貌似对后面的操作没啥影响。暂时忽略它~
Open Gerrit with a JavaScript capable browser:
http://node108.yinzhengjie.org.cn/#/admin/projects/
You have new mail in /var/spool/mail/root
[root@localhost gerrit]#
注意这里一定要手动按Y,否则不会安装
安装完成后可以使用jps命令查看实例是否启动成功
2.3. 添加gerrit管理员账号
gerrit默认第一个添加的账号为管理员账号
Gerrit服务器使用的是HTTP认证类型,并用httpd做反向代理,创建用户使用以下命令
cd /usr/local/src/gerrit/review_site/etc
[root@localhost etc]# htpasswd -c gerrit.password admin
New password:
Re-type new password:
Adding password for user admin
根据提示输入密码即可(密码设置为123456),这样账号就创建好了。创建完成,httpd和gerrit服务不需要重启。
2.4. 检查gerrit配置文件
Gerrit配置文件在etc目录
cd /usr/local/src/gerrit/review_site/etc
vim gerrit.config
端口和git存储位置可以自己更改,但是端口位置需要和nginx配置对应起来
2.5. Nginx转发配置
进入到nginx配置目录
cd /usr/local/nginx/conf
vim nginx.conf
server {
listen *:6060;
server_name 192.168.2.71;
allow all;
deny all;
auth_basic "Welcomme to Gerrit Code Review Site!";
auth_basic_user_file /usr/local/src/gerrit/review_site/etc/gerrit.password;
location / {
proxy_pass http://192.168.2.71:6061;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
}
2.6. 配置秘钥
1、gerrit和gitlab服务器生成ssh秘钥
由于前面在安装git的时候,我们已经在服务器上生成了ssh秘钥,这里我就不重复生成了,进入ssh目录查看下秘钥。
[root@test07 .ssh]# cd /root/.ssh/
2、分别复制秘钥到gerrit和gitlab中,使用cat查看秘钥,然后复制
[root@test07 .ssh]# cat id_rsa.pub
首先复制公钥到gerrit
添加成功如图:
然后添加公钥到gitlab。不同版本的gitlab公钥添加的地方不一样,但是都大同小异。一般你之前没有添加过这一步不会有异常,有异常的自己百度解决。
这种情况可能是提示你这个公钥被使用,可能是公司已经帮你统一加过秘钥了,那这个地方就不用加秘钥了
2.7. 登录gerrit网站
进入浏览器,输入刚刚部署的服务器ip+端口号
http://192.168.2.71:6060
进入界面会提示要输入用户名和密码,这个时候输入前面2.3步骤中配置的admin账号和密码就可以了。
如果输入页面的时候出现403,可以到nginx的logs目录下查看错误日志
本次错误的原因是因为nginx配置的密码文件配置错误了。修改成功后正常登录
此时gerrit已经搭建完毕