Git+gerrit+jenkins安装配置
jdk安装第一步:执行 rpm -qa|grep jdk 命令查看当前的jdk情况。第二步:执行 yum -y remove java java-1.7.0-openjdk* 卸载openjdk[root@ybr01 jdk]# vim /etc/profileexport JAVA_HOME=/u01/jdk/jdk1.8.0_131export JAVA_BIN=$JAVA
·
- jdk安装
第一步:执行 rpm -qa|grep jdk 命令查看当前的jdk情况。
第二步:执行 yum -y remove java java-1.7.0-openjdk* 卸载openjdk
[root@ybr01 jdk]# vim /etc/profile
export JAVA_HOME=/u01/jdk/jdk1.8.0_131
export JAVA_BIN=$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
[root@ybr01 jdk]# source /etc/profile
[root@ybr01 jdk]# java -version
[root@ybr01 u01]# ln -s /u01/jdk/jdk1.8.0_131/bin/java /usr/bin/java
- maven安装
[root@ybr01 home]# cd /home/
[root@ybr01 home]# tar -zcvf apache-maven-3.3.9.tar.gz
[root@ybr01 jdk]# vim /etc/profile
export MAVEN_HOME=/home/apache-maven-3.3.9
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$MAVEN_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
export JAVA_HOME JAVA_BIN PATH CLASSPATH MAVEN_HOME
#设置repository库路径
[root@ybr01 conf]# cd /home/apache-maven-3.3.9/conf
- nexus私服安装
#直接上传文件夹,解压后
#设置开机自启
[root@ybr01 nexus]# cp /home/nexus/nexus /etc/init.d/
[root@ybr01 nexus]# chkconfig --add nexus
[root@ybr01 nexus]# chkconfig nexus on
[root@ybr01 nexus]# chkconfig --list | grep nexus
nexus 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@ybr01 nexus]# service nexus status
#设置maven的setting文件的私服地址
- git 安装
[root@ybr01 bin]# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
#下载git
[root@ybr01 home]# wget
https://github.com/git/git/archive/v2.3.0.zip
#解压zip包
[root@ybr01 home]#
unzip v2.
3.0
-d
git
[root@ybr01 home]# cd git-2.3.0/
[root@ybr01 git-2.3.0]# make prefix=/usr/local/git all
[root@ybr01 git-2.3.0]#
make prefix
=
/usr/
local
/git install
#编辑profile文件
[root@ybr01 git-2.3.0]#
vim /etc/profile
export
PATH
=
/usr/local
/git/bin
:
$PATH
[root@ybr01 git-2.3.0]# source /etc/profile
[root@ybr01 git-2.3.0]# git --version
[root@ybr01 git-2.3.0]#
git version 2.3.0
#在jenkins安装机子生成ssh 公钥
[root@ybr01 .ssh]# ssh-keygen
#gitweb安装
yum install gitweb
/usr/local/git/share/gitweb/gitweb.cgi
[root@ccy001 Review]# vim etc/gerrit.config
[gitweb]
cgi =/usr/local/git/share/gitweb/gitweb.cgi
#配置gitweb
(1) 配置 /etc/gitweb.conf 文件: 在默认的文件末尾添加:
$projectroot = '/home/git/gitweb'; #gitweb展示的那些代码库的根目录
- nginx 安装
[root@ybr01 home]# wget
http://nginx.org/download/nginx-1.12.0.tar.gz
#解压
[root@ybr01 home]# tar -zxvf nginx-1.12.0.tar.gz
[root@ybr01 home]# cd /home/nginx-1.12.0
[root@ybr01 nginx-1.12.0]# yum -y install openssl openssl-devel
[root@ybr01 nginx-1.12.0]# yum -y install pcre* zlib*
[root@ybr01 nginx-1.12.0]# yum install -y gcc gcc-c++
[root@ybr01 nginx-1.12.0]# ./configure --with-stream
[root@ybr01 nginx-1.12.0]# make
[root@ybr01 nginx-1.12.0]# make install
[root@ybr01 nginx-1.12.0]# ./configure --with-http_stub_status_module --with-stream --with-http_geoip_module --with-http_ssl_module --with-http_realip_module
#设置开机自启
[root@ybr01 nexus]# chkconfig nginx on
[root@ybr01 nexus]# chkconfig --list | grep nginx
#用httppasswd配置gerrit用户 密码
[root@ccy001 gerrit]# yum -y install httpd-tools
[root@ccy001 gerrit]# htpasswd -b /home/gerrit/gerrit.passwd ccy001 ccy001
#创建软链接
ln -s /usr/local/git/bin/git /usr/bin/git
ln -s /u01/mvn/apache-maven-3.3.9/bin/mvn /usr/bin/mvn
ln -s /u01/jdk/jdk1.8.0_131/bin/java /usr/bin/java
- jenkins 安装
#上传war包至/home/jenkins
#在jenkins安装机子生成ssh 公钥
[root@ybr01 .ssh]# ssh-keygen
#解压jenkins 配置目录tar包,生成.jenkins 文件夹在/root/目录下
#启动jenkins
[root@ccy001 jenkins]# cd /home/jenkins
[root@ccy001 jenkins]# sh start-jenkins.sh
[root@ccy001 jenkins]# tail -100f system_out.log
#设置开机自启
[root@ccy001 jenkins]# vim /etc/init.d/jenkins
#!/bin/bash
#chkconfig:2345 20 90
#description:jenkins
#processname:jenkins
export JAVA_HOME=/u01/jdk/jdk1.8.0_131
case $1 in
start) su root /u01/jenkins/start-jenkins.sh;;
stop) su root /u01/jenkins/stop-jenkins.sh;;
restart) su root /u01/jenkins/stop-jenkins.sh;su root /u01/jenkins/start-jenkins.sh;;
status) ps -ef |grep jenkins;;
*) echo "require start|stop|restart|status" ;;
esac
[root@ybr01 nexus]# chkconfig jenkins on
[root@ybr01 nexus]# chkconfig --list | grep jenkins
#后续在jenkins上配置gerrit的地址,或者修改.jenkins 下的配置文件,找到192.168.1.203字样
[root@ccy001 .jenkins]# grep -ni "192.168" *.*
gerrit-trigger.xml:8: <gerritHostName>192.168.1.203</gerritHostName>
gerrit-trigger.xml:23: <gerritFrontEndUrl>http://192.168.1.203</gerritFrontEndUrl>
hudson.tasks.Mailer.xml:3: <hudsonUrl>http://192.168.1.203:8081/jenkins/</hudsonUrl>
jenkins.model.JenkinsLocationConfiguration.xml:4: <jenkinsUrl>http://192.168.1.203:8081/jenkins/</jenkinsUrl>
selenium.log:20:禁用: Grid Hub started on port 4444 with args: -maxSession 5 -timeout 300 -browserTimeout 0 -host 192.168.1.203
[root@ccy001 .jenkins]# vim gerrit-trigger.xml
#替换旧ip为新的地址
g/114.246.101.138/s//118.89.222.115/g
g/chenchaoyun/s//jenkins/g
#继续查找
[root@ccy001 .jenkins]# grep -ni "192.168" */*/*.*
find -type f -name */*/*.*
| xargs sed 's#192.168.1.203
#oldgril#g' -i
- gerrit 安装
#上传gerrit的tar包至/home 目录并解压
[root@ccy001 home]# cd /home/gerrit/
#上传gerritdb.sql 至/home/gerrit/
[root@ccy001 gerrit]# ls
gerrit-2.8.1.war gerritdb.sql Review
#导入gerrit数据脚本
[root@ccy001 gerrit]# mysql -uroot -proot123
mysql>CREATE DATABASE IF NOT EXISTS gerritdb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql>use gerritdb;
mysql>source /home/gerrit/gerritdb.sql;
mysql> create user gerritusr IDENTIFIED by 'gerritusr';
mysql> grant all on gerritdb.* to gerritusr@'localhost';
mysql> flush privileges;
mysql> grant all privileges on *.* to 'gerritusr'@'localhost' identified by 'gerritusr' with grant option;
mysql> flush privileges;
#配置gerrit 连接mysql的用户名密码
[root@ccy001 etc]# cd /home/gerrit/Review/etc
[root@ccy001 etc]# vim gerrit.config
#设置密码
[root@ccy001 etc]# vim secure.config
#设置nginx反向代理
[root@ccy001 gerrit]# vim gerrit.conf
server {
listen 80;
server_name 39.108.0.229;
location / {
root /home/gerrit/Review;
proxy_pass http://39.108.0.229:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
auth_basic "Gerrit Code Review";
auth_basic_user_file /home/gerrit/gerrit.passwd;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
#引入到nginx的配置文件
[root@ccy001 gerrit]# cd /usr/local/nginx/conf/
[root@ccy001 conf]# vim nginx.conf
#加入
include /home/gerrit/gerrit.conf;
[root@ccy001 nginx]# sh restartNginx.sh
#配置gerrit开机自启
[root@ccy001 gerrit]# cd /etc/init.d/
[root@ccy001 init.d]# vim gerrit
#!/bin/bash
#chkconfig:2345 20 90
#description:jenkins
#processname:jenkins
export JAVA_HOME=/u01/jdk/jdk1.8.0_131
case $1 in
start) su root /home/gerrit/start-gerrit.sh;;
stop) su root /home/gerrit/stop-gerrit.sh;;
restart) su root /home/gerrit/restart-gerrit.sh;;
status) ps -ef |grep gerrit;;
*) echo "require start|stop|restart|status" ;;
esac
[root@ccy001 init.d]# chkconfig gerrit on
[root@ccy001 init.d]# chkconfig --list |grep gerrit
gerrit 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
#查看gerrit启动日志
[root@ccy001 bin]# tail -100f /home/gerrit/Review/logs/error_log
- gerrit 安装 初始化
#下载地址,翻墙
#上传gerrit war包至服务器, 初始化
#第一个用户必须是admin
#安装gitweb
[root@ccy001 git]#
yum -y install gitweb
[root@ccy001 bin]# ln -s /usr/local/git/share/gitweb/gitweb.cgi /usr/lib/cgi-bin/gitweb.cgi
#gerrit 2.14 版本可以提前准备好配置文件
[root@ccy001 git]# vim /home/gerrit/etc/gerrit.config
[gerrit]
basePath = git
canonicalWebUrl = http://39.108.0.229/
[database]
type = mysql
hostname = localhost
database = gerritdb
username = gerritusr
[auth]
type = HTTP
[sendemail]
smtpServer = localhost
[container]
user = root
javaHome = /u01/jdk/jdk1.8.0_131/jre
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = proxy-http://*:8080/
[cache]
directory = cache
#复制代码库至/home/gerrit/git/目录下
[root@ccy001 gerrit]#
java -jar gerrit-2.14.2.war init -d gerrit/Review
#安装提示
#Location of Git repositories [git]: /home/review_site/git/
#Database server type [h2]: mysql
#Database name [reviewdb]: gerritdb
#Database username [root]: gerritusr
#Authentication method [OPENID/?]: http
#Behind reverse proxy [Y/n]? y
#Canonical URL [http://ccy001/]: http://39.108.0.229/
#创建nginx 反向代理文件
[root@ccy001 gerrit]# vim gerrit.conf
server {
listen 80;
server_name 39.108.0.229;
location /{
root /home/gerrit;
proxy_pass http://39.108.0.229:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
auth_basic "Gerrit Code Review";
auth_basic_user_file /home/gerrit/gerrit2.passwd;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
(1)gerrit 提交信息乱码
#查看gerrit 数据库编码
mysql> show variables like '%character%';
|
character_set_server
|
latin1
|
首先保证服务器的系统编码是支持中文的
[root@115 ~]# cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
#永久性修改mysql
[root@115 ~]# vim /etc/my.cnf
.......
[mysqld]
......
character_set_server = utf8 【添加这一行内容】
#重启
[root@115 ~]# service mysql restart
- (1)gerrit 发送邮件异常
[sendemail]
smtpServer = smtp.163.com
smtpServerPort = 465
smtpEncryption = ssl
smtpUser = 18734170206
smtpPass = your password
sslVerify = false
from=CodeReview<18734170206@163.com>
#或者
[sendemail]
smtpServer = smtp.qq.com
smtpServerPort = 465
smtpEncryption = ssl
smtpUser = 474849750@qq.com
smtpPass = your password
sslVerify = false
from=CodeReview<474849750@qq.com>
- (1)启动gerrit异常
(1) No index versions ready; run java -jar /home/gerrit/bin/gerrit.war reindex
[root@ccy001 gerrit]# java -jar gerrit.war reindex -d /home/gerrit/Review
- (2)The page you requested was not found, or you do not have permission to view
反向代理配置最后不用加/
- (3) User jenkins has no capability to connect to Gerrit event stream
解决方案
- 管理员登录gerrit
- Projects->List->All-Projects
- Projects->Access
- Global Capabilities->Stream Events 点击 Non-Interactive Users
- 添加 Jenkins@zjc.com 用户到 ‘Non-Interactive Users’ 组
- (4)gitweb 问题解决"Can't locate Time/HiRes.pm in @INC"问题
yum -y install perl-Time-HiRes
yum -y install perl-CPAN
yum -y install perl-CGI
- (5)解决Gerrit的git unpack error问题,error Missing unknown 613fd2557fba30aff2dbd51c3807cc57561bab08
#解决的办法就是到reviewdb数据库里,先从patch_sets表中找出change_id是 对应commitid的记录,确定无误后
我们要做的是将其关闭,并把状态置为Abandon。(友情提醒,涉及重要业务,注意备份数据库)
mysql> update changes
set open=
'
N
',status=
'
A
'
where change_id=
1974
;
- (6)Gerrit集成Gitweb没有查看权限问题
gerrit集成gitweb后,系统管理员有权限进去gitweb,其他成员进去都是not found。
解决方案:
在单独项目的ACL里为项目的用户组增加了对refs/meta/config的read权限。用户可以正常显示gitweb页面。
不良影响:
原来gerrit是用git做自身的ACL管理的,因此所有对refs/meta/config有read权限的用户都可以在Project的Access页面里修改权限,修改后虽然不能直接submit,
但是可以作为patch提交review。而且通过gitweb就能够看到project.config和groups文件的全部内容,知道当前项目是如何设置权限的。
这样是否合适就仁者见仁智者见智了。另外,对于用户提交的关于权限修改的patch如果想commit的话需要对refs/meta/config做和refs/heads/*一样的权限设定,
也就说需要Label Code-Review,Label Verified,Submit三个权限才有可能commit patch。
- (7)jenkins build的时候拿的不是新提交的代码
- 源码管理
- 选择git,
Refspec:refs/changes/*:refs/changes/* Branch Specifier (blank for 'any'):$GERRIT_REFSPEC
- (8)jenkins 配置slave的时候命令找不到
- 把要用的命令创建一个快捷方式到/usr/bin,如
- ln -s /usr/local/git/bin/git /usr/bin/git
- ln -s /home/apache-maven-3.3.9/bin/mvn /usr/bin/mvn
ln -s /u01/jdk/jdk1.8.0_131/bin/java /usr/share/java
ln -s /u01/maven/apache-maven-3.3.9/bin/mvn /usr/bin/mvn
ln -s /usr/local/git/bin/git /usr/bin/git
- (9)设置job在slave机器上执行
在job的Configure中,
Advanced Project Options,选择高级,
勾选“Restrict where this project can be run”,在Label Expression中,输入slave的标签,如“slave104”
- (10)修改gerrit 访问url,加上后缀 gerrit。如http://39.108.0.229/gerrit/
- 1、修改gerrit 配置文件
- #修改两个地方,gerrit与httpd
- vim /home/gerrit/Review/etc/gerrit.config
- [gerrit]
- basePath = git
- canonicalWebUrl = http://39.108.0.229/gerrit
- [httpd]
- listenUrl = http://*:8080/gerrit
- 2、修改gerrit nginx的反向代理配置文件
- (11)设置gerrit项目权限
- (11)com.sonymobile.tools.gerrit.gerritevents.ssh.SshException: com.jcraft.jsch.JSchException: Auth fail,User: jenkins KeyFile: /root/.ssh/id_rsa
原因是新安装的gerrit jenkins用户没有配置主机的ssh key,登陆jenkins用户到gerrit,添加SSH Public key 就好了
- (12)jenkins 打包构建时,杀掉jenkins脚本里执行的进程,解决办法
解决办法:
1.启动 Jenkins 的时候加上 -Dhudson.util.ProcessTree.disable=true,也就是
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war
2.在后台进程前加上 BUILD_ID=dontKillMe,也就是
BUILD_ID=dontKillMe nohup npm start >/var/app/nohup.out 2>&1 &
用了上面二个方法后,就解决jenkins自动杀npm进程的问题了.
ps:
下面是其他网上找的一些方法,当然能不能解决问题我就不知道了.
1.在execute shell输入框中加入BUILD_ID=DONTKILLME,即可防止jenkins杀死启动的进程
2.临时改变BUILD_ID值,使得jenkins不会找到并结束掉run.sh启动的后台进程
OLD_BUILD_ID=$BUILD_ID
echo $OLD_BUILD_ID
BUILD_ID=dontKillMe
./run.sh restart
#改回原来的BUILD_ID值
BUILD_ID=$OLD_BUILD_ID
echo $BUILD_ID
(13)git 克隆项目出现
no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
解决办法:用git bash执行
vi ~
/.ssh/config
#插入
Host 39.108.0.229
KexAlgorithms
+
diffie
-hellman
-group1
-sha1
(14)jenkins nginx 配置反向代理报404
解决办法:vim /usr/local/nginx/conf/nginx.conf
location /{
try_files $uri @jenkins;
}
location @jenkins{
internal;
client_max_body_size 30m;
client_body_buffer_size 128k;
proxy_buffer_size 26400k;
proxy_buffers 32 25000k;
proxy_busy_buffers_size 33280k;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://123.206.68.97:8081;
access_log logs/jenkins_access.log;
}
15、gerrit 主题配置
[root@ccy001 gerrit]# vim Review/etc/gerrit.config ^C
[theme]
backgroundColor = FCFEEF
textColor = 000000
trimColor = D4E9A9
selectionColor = FFFFCC
topMenuColor = D4E9A9
changeTableOutdatedColor = F08080
[theme "signed-in"]
backgroundColor = FFFFFF
[theme "signed-out"]
backgroundColor = 00FFFF
- gerrit 仓库添加项目
#前提是id_rsa.pub添加到gerrit的ssh认证中
ssh -p 29418 user@localhost gerrit create-project --name demo-project
ssh -p 29418 admin@39.108.0.229 gerrit create-project --name bookmanager
git push ssh://user@localhost:29418/demo-project *:*
git push ssh://chenchaoyun@
39.108.0.229
:29418/demo-project *:*
- #htpasswd的使用
#新建用户
htpasswd -b /home/gerrit/gerrit2.passwd ccy001 ccy001
#
htpasswd命令删除用户名和密码
htpasswd -D /home/gerrit/gerrit2.passwd ccy001
#
htpasswd命令修改密码
htpasswd -D .passwd Jack
htpasswd -b .passwd Jack 123456
- gerrit 升级操作
1、导出203备份的reviewdb.sql
mysqldump -ugerritusr -pgerritpass gerritdb>gerritdb.sql
2、安装 gerrit-2.8.1.war,安装完2.8.1 需要试试看历史记录还在不
3、依次安装 2.9-->2.10-->2.11;最高可升级至2.11版本
4、需要将gerrit缓存文件(隐藏文件夹.gerritcodereview)转移到新的gerrit 目录
原Review目录下,删除bin etc logs lib plugins文件夹
更多推荐
已为社区贡献2条内容
所有评论(0)