CI持续集成系统环境---部署gerrit环境总结
开发同事提议在线上部署⼀套gerrit代码审核环境,废话不多说,部署gerrit的操作记录如下:
提前安装好java环境,mysql环境,nginx环境
测试系统:centos6.5
下载下⾯三个包,放到/root⽬录下(下载地址:(提取密码gqj5))
mysql-connector-java-5.1.21.jar
bcpkix-jdk15on-1.52.jar
gerrit-2.11.3.war
--------------------------------------------gerrit历史版本下载地址-----------------------------------------------
leapis/index.html
---------------------------------------------------------------------------------------------------------------
1)创建gerrit数据库,并⾃定义编码为utf8
mysql>create database gerritdb CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql下载starting the servermysql>grant all on gerritdb.* to 'gerrituser'@'localhost' identified by 'gerritpass';
2)添加账号
[root@115 ~]#useradd gerrit
[root@115 ~]#su - gerrit
[gerrit@115 ~]$
在root账号下操作
[root@115 ~]# cp /root/gerrit-2.11.3.war /home/gerrit
下⾯⼀步很重要,就是说提前把下⾯的两个软件放到相应的位置,以防在gerrit安装过程中再去执⾏下载操作(因为安装过程中再去下载,由于⽹速问题会failed!)
[root@115 ~]#mkdir -p /home/gerrit/gerrit_site/lib
[root@115 ~]#cp /root/mysql-connector-java-5.1.21.jar /home/gerrit/gerrit_site/lib/
[root@115 ~]#cp /root/bcpkix-jdk15on-1.52.jar /home/gerrit/gerrit_site/lib/
[root@115 ~]#chown -it /home/gerrit
接着在gerrit账号下进⾏安装
除了选⽤mysql数据库,Verified,http认证代理,其他的都是默认!
[gerrit@115 ~]$ java -jar gerrit-2.11.3.war init -d ~/gerrit_site
Using secure store: it.server.securestore.DefaultSecureStore
*** Gerrit Code Review 2.11.3
***
*** 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]?
Renaming mysql-connector-java-5.1.10.jar to .mysql-connector-java-5.1.10.jar.backupDownloading /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 [gerrit]: gerrituser
gerrituser's password :
confirm password :
*** Index
***
Type [LUCENE/?]:
The index must be rebuilt before starting Gerrit:
java -jar gerrit.war reindex -d site_path
*** User Authentication
***
Authentication method [OPENID/?]: http
Get username from custom HTTP header [y/N]?
SSO logout URL :
*** Review Labels
***
Install Verified label [y/N]? y
*** Email Delivery
***
SMTP server hostname [localhost]:
SMTP server port [(default)]:
SMTP encryption [NONE/?]:
SMTP username :
*** Container Process
***
Run as [gerrit]:
Java runtime [/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-1.b14.el6.x86_64/jre]:
Copy gerrit-2.11.3.war to /home/gerrit/gerrit_site/bin/gerrit.war [Y/n]?
Copying gerrit-2.11.3.war to /home/gerrit/gerrit_site/bin/gerrit.war
*** SSH Daemon
***
Listen on address [*]:
Listen on port [29418]:
Gerrit Code Review is not shipped with Bouncy Castle Crypto SSL v151
If available, Gerrit can take advantage of features
in the library, but will also function without it.
Download and install it now [Y/n]?
Renaming bcpkix-jdk15on-1.52.jar to .bcpkix-jdk15on-1.52.jar.backupDownloading /download/bcpkix-jdk15on-151.jar ... !! FAIL !! error: /download/bcpkix-jdk15on-151.jar: 302 Found
Please download:
/download/bcpkix-jdk15on-151.jar
and save as:
/home/gerrit/gerrit_site/lib/bcpkix-jdk15on-151.jar
Press enter to continue
Continue without this library [Y/n]?
Generating SSH host key ... rsa(simple)... done
*** HTTP Daemon
***
Behind reverse proxy [y/N]?
Use SSL () [y/N]?
Listen on address [*]:
Listen on port [8080]:
Canonical URL [Zabbix-server:8080/]:
*** Plugins
***
Installing plugins.
Install plugin download-commands version v2.11.3 [y/N]?
Install plugin reviewnotes version v2.11.3 [y/N]?
Install plugin singleusergroup version v2.11.3 [y/N]?
Install plugin replication version v2.11.3 [y/N]?
Install plugin commit-message-length-validator version v2.11.3 [y/N]?
Initializing plugins.
No plugins found with init steps.
Initialized /home/gerrit/gerrit_site
注意:
⼀键安装后,默认没有安装上任何插件的,如果⽤到插件,需要事后⼿动安装。
⼿动安装插件(⽐如replication同步插件)的⽅法请见于:(⽂章结尾有介绍)
*************************************************************************
第⼀次⼿动启动gerrit服务,可能会有下⾯连个报错
1)
[gerrit@115 ~]$/home/gerrit/gerrit_site/bin/gerrit.sh start
** ERROR: GERRIT_SITE not set
解决办法:
在/home/gerrit/gerrit_site/bin/gerrit.sh启动⽂件⾥添加下⾯⼀⾏,即指定gerrit2的路径
GERRIT_SITE=/home/gerrit/gerrit_site
2)
[gerrit@115 ~]$ /home/gerrit/gerrit_site/bin/gerrit.sh start
Starting Gerrit Code Review: FAILED
查看⽇志,报错如下:
[gerrit@115 ~]$ tail -f /home/gerrit/gerrit_site/logs/error_log
[2016-07-14 10:52:07,317] le.gerrit.server.cache.h2.H2CacheFactory : Enabling disk cache /home/gerrit/gerrit_site/cache
[2016-07-14 10:52:08,110] le.fig.ScheduleConfig : gc schedule parameter "gc.interval" is not configured
[2016-07-14 10:52:08,859] lipse.jetty.util.log : Logging initialized @4743ms
[2016-07-14 10:52:09,278] le.gerrit.server.git.LocalDiskRepositoryManager : Defaulting core.streamFileThreshold to 2047m
[2016-07-14 10:52:09,320] le.gerrit.server.plugins.PluginLoader : Loading plugins from /home/gerrit/gerrit_site/plugins
[2016-07-14 10:52:09,322] le.gerrit.pgm.Daemon : Unable to start daemon
1) No index versions ready; run Reindex
1 error
le.gerrit.lucene.LuceneVersionManager.start(LuceneVersionManager.java:119)
le.gerrit.lifecycle.LifecycleManager.start(LifecycleManager.java:74)
le.gerrit.pgm.Daemon.start(Daemon.java:293)
le.gerrit.pgm.Daemon.run(Daemon.java:205)
le.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:64)
flect.NativeMethodAccessorImpl.invoke0(Native Method)
flect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
flect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at flect.Method.invoke(Method.java:498)
le.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java:166)
le.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:93)
le.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:50)
at Main.main(Main.java:25)
解决办法:运⾏reindex
[gerrit@115 ~]$ java -jar gerrit-2.11.3.war reindex -d /home/gerrit/gerrit_site
[2016-07-14 10:03:43,957] [main] le.gerrit.pgm.util.ThreadLimiter : Limiting program to 8 threads due to database.poolLimit
[2016-07-14 10:03:44,031] [main] le.gerrit.server.git.LocalDiskRepositoryManager : Defaulting core.streamFileThreshold to 2047m
[2016-07-14 10:03:44,492] [main] le.gerrit.server.cache.h2.H2CacheFactory : Enabli
ng disk cache /home/gerrit/gerrit_site/cache
Reindexing changes: done
Reindexed 0 changes in 0.0s (0.0/s)
再次启动gerrit就成功了
[gerrit@115 ~]$ /home/gerrit/gerrit_site/bin/gerrit.sh start
Starting Gerrit Code Review: OK
**************************************************************************
修改/home/gerrit/gerrit_site/fig配置⽂件
注意下⾯两个配置项,修改后如下:
[gerrit]
basePath = git
canonicalWebUrl = 103.10.86.30/                  //nginx的代理端⼝
.........
[httpd]
listenUrl = *:8080/
下⾯是nginx的认证代理配置记录
[root@115 vhosts]# pwd
/usr/local/nginx/conf/vhosts
[root@115 vhosts]# f
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log  /var/log/nginx/log/host.access.log  main;
location / {
auth_basic              "Gerrit Code Review";
auth_basic_user_file    /home/gerrit/gerrit_site/etc/passwords;            //AuthUserFile路径
proxy_pass      103.10.86.30:8080;          //注意后⾯不能加"/",否则会出现“Code Review - Error The page you requested was permission to view this page”的报错
proxy_set_header        X-Forwarded-For $remote_addr;
proxy_set_header        Host $host;
}
}
但是nginx进程⽤户(这⾥是www)⽆权访问此路径,需要对/home/gerrit进⾏赋权:
[gerrit@115 ~]# setfacl -m g:www:rx /home/gerrit
这⼀步很重要!否则,访问gerrit的时候会报500的错!
[或者 setfacl -R -m u:www:rx /home/gerrit  上⾯是针对所属组进⾏授权,这⾥可以针对⽤户授权]
创建认证权限(也就是登陆的时候输⼊的权限)
注意:第⼀次加-c参数是为了创建密码⽂件,默认第⼀个⽤户是系统管理员
[root@115 vhosts]#htpasswd -c /home/gerrit/gerrit_site/etc/passwords  gerrit
New password:
Re-type new password:
Adding password for user gerrit
[root@115 vhosts]#htpasswd /home/gerrit/gerrit_site/etc/passwords wangshibo
New password:
Re-type new password:
Adding password for user wangshibo
[root@115 vhosts]#htpasswd /home/gerrit/gerrit_site/etc/passwords jenkins
New password:
Re-type new password:
Adding password for user jenkins
查看下认证账号⽂件信息
[root@115 vhosts]# cat /home/gerrit/gerrit_site/etc/passwords
重启nginx服务
[root@115 vhosts]# /usr/local/nginx/sbin/nginx -s reload
访问ip,输⼊上⾯创建的⽤户信息即可登陆gerrit
*************** *************** *************** *************** ***************
下⾯是设置邮箱的操作
在gerrit⼀键安装的时候,邮箱环节采⽤的是默认安装。
安装后登陆gerrit,默认情况下邮箱是空的。
这个时候,可以⼿动设置。
注册邮箱并激活,具体设置如下:
切换到gerrit账号下
[gerrit@115etc]$ pwd
/home/gerrit/gerrit_site/etc
[gerrit@115 etc]$ fig
............
[sendemail]
smtpServer = smtp.xqshijie                  【此处设置的是发件邮箱信息】
smtpUser = ops@xqshijie
from = ops@xqshijie
smtpPass = iJWxSmXcOz9hs4xH
[gerrit@115 etc]$ fig
[auth]
registerEmailPrivateKey = 65RWiWt5/ZxKN0ISPv8U8dee9vL2+cLidPk=
restTokenPrivateKey = O9k9OAlvWxdtOspz4Mjff85ZoUlZJfxvxDU=
[sendemail]
smtpPass = iJWxSmXcOz9hs4xH
注意:
sendmail的密码会另保存到fig⽂件⾥,⼀定要保证fig⽂件⾥的密码和fig⾥的密码⼀致!然后重启gerrit服务即可!
[gerrit@115 etc]$ /home/gerrit/gerrit_site/bin/gerrit.sh restart
Stopping Gerrit Code Review: OK
Starting Gerrit Code Review: OK
-------------------上⾯采⽤的是阿⾥,也可以采⽤其他邮箱账号进⾏发件,⽐如163邮箱等------------------------[sendemail]
smtpServer = smtp.163
smtpUser = wang_shibo1987@163
from = wang_shibo1987@163
smtpPass = x1nN13ZcJcNKenl1
-------------------------------------------------------------------------------------------------------------------------------
然后登陆gerrit界⾯进⾏邮箱注册
默认情况下不注册邮箱,在设置栏⾥是没有邮箱可以选择的
邮件发送成功
登陆邮箱,如截图中的激活链接如下,点击激活
103.10.86.30:80/#/VE/Mc3qASBMgi9tkXJZZ99YyF9OOnqXnk8qZhz5Cg==$MzpqZW5raW5zQHhxc2hpamllLmNu
激活之后,在设置栏⾥就有邮箱可选择了
------------------------------------------------------------------------------------------------------------------------
注意:
⽤htpasswd创建第⼀个⽤户时默认是系统管理员,ID为1000000,默认只有这个系统管理员才有Create权限(创建group和Project),
其他的都只有“List”查看权限
⽤htpasswd创建的⽤户时,并没有往gerrit中添加账号,只有当该⽤户通过web登陆gerrit服务器时,该账号才会被添加进gerrit数据库中。退出admin账号重新登陆(HTTP认证模式不⽀持Sign Out,需要先Sign Out退出账号,关闭浏览器后再登陆才能出现http验证密码的对话框---------------------------------------------git中⽂编码问题------------------------------------------------------------
为妥善解决中⽂编码的问题,对所有git repository做如下约定:
  a、所有⽂本⽂件都必须存储成utf8编码
  b、对git做如下设置:
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf8
    git config --global i18nmitencoding utf8
安装gerrit的时候对于数据库(选择myqsl⽅式的话)的编码设定为utf8
--------------------------------------------gerrit对接gitweb-----------------------------------------------------
上⾯搭建好的gerrit,登陆进去在Projects项⽬⾥的右边没有gitweb的超链接
1.需要先搭建gitweb,然后进⾏相关配置
[root@115 ~]# yum install -y gitweb    【或者直接yum install -y git*】
gitweb安装后的⽬录路径是/var/www/git
2. 通过git config配置⼀下
[root@115 ~]#git config --file /home/gerrit/gerrit_site/i /var/www/i
[root@115 ~]#git config --file /home/gerrit/gerrit_site/fig --unset gitweb.url
3.重启gerrit,然后登陆gerrit后,gitweb超链接效果就有了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。