- 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-dgit
[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
exportPATH=/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<[email protected]>
#或者
[sendemail]
smtpServer = smtp.qq.com
smtpServerPort = 465
smtpEncryption = ssl
smtpUser = [email protected]
smtpPass = your password
sslVerify = false
from=CodeReview<[email protected]>
- (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
- 添加 [email protected] 用戶到 ‘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 [email protected] 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文件夾