Git+Gerrit+Jenkins 持續集成系統安裝與升級

Git版本機環境遷移與升級  本文作者:陳超允,轉載請註明                                            

Git版本機環境遷移與升級說明

技術組

文檔修訂記錄

日期
修訂內容
修訂人
版本
備註
2017-12-20
首次編寫
陳超允
V1.0
初始化
         
         
         


  1. 準備工作

    1. 備份gerrit目錄與數據庫

#登陸203

#備份gerrit目錄,代碼庫在GERRIT_HOME/Review/git

[root@sttx home]# cd /home/
[root@sttx home]# tar -zcvf gerrit.tar.gz gerrit/
[root@sttx dev0]# mkdir -p /home/dev0/
[root@sttx dev0]# mv gerrit.tar.gz /home/dev0/


#備份數據庫

[root@sttx dev0]# mysqldump –ugerrituser -p gerritdb>/home/dev0/reviewdb.sql
[root@sttx dev0]# ls
gerrit.tar.gz  reviewdb.sql


    1. 備份Jenkins

#確定JENKINS_HOME=/home/.jenkins

#由於以往jenkins開發構建時,保留所有構建記錄,不能立即打包

#兩種做法,一是刪除以往構建,二是打包時跳過歷史構建目錄,這裏選擇刪除以往構建

[root@sttx jobs]# cd /home/.jenkins/jobs/
[root@sttx jobs]# rm -rf ./*/builds/* ./*/workspace/* ./*/workspace/.git*


#修改jenkins項目構建配置爲

#修改完成後對JENKINS_HOME打包
[root@sttx home]# tar -zcvf jenkins-home.tar.gz .jenkins/
[root@sttx home]# mv jenkins-home.tar.gz dev0/
[root@sttx home]# cd dev0/
[root@sttx dev0]# ls
gerrit.tar.gz  jenkins-home.tar.gz  reviewdb.sql


#傳送到雲服務器
[root@sttx dev0]# scp * ccy001:/u01/soft/


    1. 備份私服庫

#登陸192.168.1.111

[root@ddp01 mvn]# pwd
/u01/mw/mvn
[root@ddp01 mvn]# ls
nexus  nexus-2.11.2-03  sonatype-work
[root@ddp01 mvn]# tar -zcvf nexus-2.11.2-03.tar.gz nexus-2.11.2-03/
[root@ddp01 mvn]# tar -zcvf sonatype-work.tar.gz sonatype-work/


#傳送

[root@ddp01 mvn]# scp nexus-2.11.2-03.tar.gz sonatype-work.tar.gz ccy001:/u01/soft


  1. 安裝步驟

    1. JDK

[root@dev0 soft]# mkdir -p /u01/jdk/
[root@dev0 soft]# cp /u01/soft/jdk1.8.0_131.tar.gz /u01/jdk/
[root@dev0 soft]# cd /u01/jdk/
[root@dev0 jdk]# ls
jdk1.8.0_131.tar.gz
[root@dev0 jdk]# tar -zxvf jdk1.8.0_131.tar.gz
[root@dev0 jdk]# rm -rf jdk1.8.0_131.tar.gz


#配置環境變量,添加如下內容

[root@dev0 u01]# vim /etc/profile
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
export JAVA_HOME=/u01/jdk/jdk1.8.0_131
export JAVA_BIN=$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin
export MAVEN_HOME=/u01/mvn/apache-maven-3.3.9
export GIT_HOME=/usr/local/git/bin
export GIT_CORE=/usr/local/git/libexec/git-core
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$JAVA_HOME/bin:/root/bin
export PATH=$PATH:$GIT_HOME:$MAVEN_HOME/bin:$GIT_CORE
[root@dev0 u01]# source /etc/profile
[root@dev0 u01]# java -version
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
java version "1.8.0_131"


#創建軟鏈接

[root@dev0 u01]# ln -s /u01/jdk/jdk1.8.0_131/bin/java /usr/bin/java


    1. Maven安裝

[root@dev0 u01]# mkdir -p /u01/mvn
[root@dev0 u01]# cp /u01/soft/apache-maven-3.3.9.tar.gz /u01/mvn/
[root@dev0 u01]# cd /u01/mvn/
[root@dev0 mvn]# ls
apache-maven-3.3.9.tar.gz
[root@dev0 mvn]# tar -zxvf apache-maven-3.3.9.tar.gz


#修改setting爲雲環境上私服地址,替換192.168.1.111dev0

[root@dev0 conf]# cd /u01/mvn/apache-maven-3.3.9/conf/
[root@dev0 conf]# vim settings.xml


#vim執行替換

:g/192.168.1.111/s//dev0/g


[root@dev0 conf]# mvn -v
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
Apache Maven 3.3.9…


#創建軟鏈接

[root@dev0 u01]# ln -s /u01/mvn/apache-maven-3.3.9/bin/mvn /usr/bin/mvn


    1. Git安裝

[root@dev0 soft]# unzip v2.3.0.zip
[root@dev0 soft]# cd git-2.3.0/


#安裝git依賴包

[root@dev0 git-2.3.0]# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
[root@dev0 git-2.3.0]# make prefix=/usr/local/git all
[root@dev0 git-2.3.0]# make prefix=/usr/local/git install
[root@dev0 git-2.3.0]# git --version


git version 2.3.0


#創建軟鏈接

[root@dev0 git-2.3.0]# ln -s /usr/local/git/bin/git /usr/bin/git


 

    1. Nginx安裝

[root@pelican mvn]# cd /u01/soft/
[root@pelican soft]# wgethttp://nginx.org/download/nginx-1.12.2.tar.gz
[root@pelican soft]# tar -zxvf nginx-1.12.2.tar.gz
[root@pelican soft]# cd nginx-1.12.2


#安裝依賴包

[root@pelican soft]#yum -y install openssl openssl-devel
[root@pelican soft]#yum -y install pcre* zlib*
[root@pelican soft]#yum install -y gcc gcc-c++
[root@pelican soft]#yum install GeoIP
[root@pelican soft]#./configure --with-stream
[root@pelican soft]#make && make install
[root@pelican soft]#./configure --with-http_stub_status_module --with-stream --with-http_geoip_module --with-http_ssl_module --with-http_realip_module
[root@pelican soft]#make && make install


#安裝完的目錄/usr/local/nginx

#創建啓停重啓腳本

[root@pelican ~]# cd /usr/local/nginx/
[root@pelican nginx]# cat startNginx.sh


cd /usr/local/nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
[root@pelican nginx]# cat stopNginx.sh
pkill -9 nginx
[root@pelican nginx]# cat restartNginx.sh
cd /usr/local/nginx/sbin/
./nginx -s reload


      1. 設爲系統服務自啓

[root@pelican nginx]# cat /etc/init.d/nginx
#!/bin/sh
#
# Startup script for the nginx Continuous Integration server
# (via Jakarta Tomcat Java Servlets and JSP server)
#
# chkconfig: - 85 15
# description: Jakarta nginx Java Servlets and JSP server
# processname: nginx
# pidfile: /u01/app/nginx/.pid

export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
EXCUTE_USER=root
APP_NAME=nginx
LOCKFILE=/var/lock/$APP_NAME
APP_HOME=/usr/local/nginx

case "$1" in
  start)
        echo -n "Starting $APP_NAME: "
        su -p -s /bin/sh $EXCUTE_USER -c "$APP_HOME/start*.sh"
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch $LOCKFILE
        ;;
  stop)
        echo -n "Shutting down $APP_NAME: "
        su -p -s /bin/sh $EXCUTE_USER -c "$APP_HOME/stop*.sh"
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f $LOCKFILE
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  condrestart)
       [ -e $LOCKFILE ] && $0 restart
       ;;
  status)
        su -p -s /bin/sh $EXCUTE_USER -c "ps -ef |grep $APP_NAME"
        ;;
  *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
esac

exit 0


#設置服務

[root@pelican nginx]#chmod a+x /etc/init.d/nginx
[root@pelican nginx]#chkconfig nginx on
[root@pelican nginx]# chkconfig --list |grep nginx
nginx             0:關閉   1:關閉   2:啓用   3:啓用   4:啓用   5:啓用   6:關閉
[root@pelican nginx]#service nginx status


#nginx配置後續再做

 

    1. GitWeb安裝

[root@dev0 git-2.3.0]# yum -y install gitweb
[root@dev0 git-2.3.0]#yum -y  install perl-Time-HiRes
[root@dev0 git-2.3.0]#yum -y install perl-CPAN
[root@dev0 git-2.3.0]#yum -y install perl-CGI


#配置gitweb 展示的那些代碼庫的根目錄

[root@dev0 git-2.3.0]# vim /etc/gitweb.conf
$projectroot = "/u01/gerrit/Review/git"


#創建軟鏈接

[root@dev0 gerrit]# mkdir -p /usr/lib/cgi-bin/
[root@dev0 gerrit]# ln -s /usr/local/git/share/gitweb/gitweb.cgi /usr/lib/cgi-bin/gitweb.cgi


    1. MySQL安裝

[root@dev0 soft]# mkdir -p /u01/mysql
[root@dev0 soft]# cd /u01/mysql/
[root@dev0 mysql]# cp /u01/soft/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz ./
[root@dev0 mysql]# tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
[root@dev0 mysql]# rm -rf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
[root@dev0 mysql]# cd mysql-5.7.17-linux-glibc2.5-x86_64/
[root@dev0 mysql-5.7.17-linux-glibc2.5-x86_64]# mkdir /u01/mysql/logs /u01/mysql/data


#先將配置好的my.conf文件傳至服務器


#直接用root用戶裝,修改user=root

[root@dev0 mysql]# vim /etc/my.cnf


user=root
[root@dev0 mysql]# mysql-5.7.17-linux-glibc2.5-x86_64/bin/mysqld --initialize --user=root --basedir=/u01/mysql --datadir=/u01/mysql/data  --innodb_undo_tablespaces=3 --explicit_defaults_for_timestamp
#此處需要注意記錄生成的臨時密碼,如:root@localhost:jh7n;CSoXbgh
[root@dev0 mysql]# mysql-5.7.17-linux-glibc2.5-x86_64/bin/mysql_ssl_rsa_setup --datadir=/u01/mysql/data/


#查看默認密碼

[root@dev0 mysql]#cat /u01/mysql/logs/mysql-error.log
[root@dev0 mysql-5.7.17-linux-glibc2.5-x86_64]# cp support-files/mysql.server /etc/init.d/mysql
[root@dev0 mysql-5.7.17-linux-glibc2.5-x86_64]# chkconfig --add mysql
[root@dev0 mysql-5.7.17-linux-glibc2.5-x86_64]# chkconfig mysql on
[root@dev0 mysql-5.7.17-linux-glibc2.5-x86_64]# chkconfig --list | grep mysql
mysql            0:off       1:off       2:on 3:on 4:on 5:on 6:off



[root@dev0 mysql]# vim /etc/init.d/mysql
basedir=/u01/mysql/mysql-5.7.17-linux-glibc2.5-x86_64
datadir=/u01/mysql/data


#配置環境變量

[root@dev0 mysql]# vim /etc/profile
export MYSQL_HOME=/u01/mysql/mysql-5.7.17-linux-glibc2.5-x86_64/bin


#創建軟鏈接

[root@dev0 mysql]# ln -s /u01/mysql/mysql-5.7.17-linux-glibc2.5-x86_64/bin/mysqld /usr/bin/mysqld


#登陸mysql

[root@dev0 mysql]# mysql --user=root -p
mysql> SET PASSWORD=PASSWORD('password');
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


#添加遠程訪問權限

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set host = '%' where user = 'root';
Query OK, 1 row affected (0.01 sec)


#重啓

[root@dev0 mysql]# service mysql restart


      1. 導入gerrit數據庫腳本

mysql>CREATE DATABASE IF NOT EXISTS reviewdb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> use reviewdb;
mysql> source /u01/soft/dev0/reviewdb.sql


      1. Mysql反向代理配置

#配置mysql反向代理流

[root@pelican nginx]# pwd
/usr/local/nginx
[root@pelican nginx]# vim conf/nginx.conf
#gerrit-mysql
stream {
    server {
       listen 3300;
       proxy_pass dev0:3306;
       proxy_buffer_size 512k;
       allow all;
    }
}
#重啓nginx
[root@pelican nginx]# sh restartNginx.sh


#navicat遠程連接測試是否能連上

    1. Gerrit安裝

#解壓從203備份的gerrit tar

[root@dev0 u01]# cp soft/dev0/gerrit.tar.gz ./
[root@dev0 u01]# tar -zxvf gerrit.tar.gz


#修改配置

[root@dev0 logs]# cd /u01/gerrit/Review/
[root@dev0 Review]# cat etc/gerrit.config


[gerrit]
       basePath = git
       canonicalWebUrl = http://39.108.0.229/gerrit
[database]
       type = mysql
       hostname = localhost
       database = reviewdb
       username = root
[index]
       type = LUCENE
[auth]
       type = HTTP
[sendemail]
        smtpServer = smtp.qq.com
        smtpServerPort = 465
        smtpEncryption = ssl
        smtpUser = [email protected]
        smtpPass = ybvnzfujouqocaaa
        sslVerify = false
        from=CodeReview<[email protected]>
[gitweb]
        cgi = /usr/local/git/share/gitweb/gitweb.cgi
[container]
       user = root
       javaHome = /u01/jdk/jdk1.8.0_131/jre
[sshd]
       listenAddress = *:29418
[httpd]
       listenUrl = http://*:8080/gerrit
[cache]
       directory = cache


#重啓失敗,重新更新下索引

[root@dev0 gerrit]# cd Review/bin/
[root@dev0 bin]# java -jar gerrit.war reindex -d /u01/gerrit/Review



#安裝gerrit爲系統服務,開機自啓

[root@dev0 gerrit]# vim /etc/init.d/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 /u01/gerrit/start-gerrit.sh;;
        stop) su root  /u01/gerrit/stop-gerrit.sh;;  
        restart) su root /u01/gerrit/restart-gerrit.sh;;
    status)su -p -s /bin/sh root -c "ps -ef |grep gerrit";;
        *) echo "require start|stop|restart|status" ;;
esac
[root@dev0 jenkins]# chmod a+x /etc/init.d/gerrit
[root@dev0 gerrit]# chkconfig gerrit on
[root@dev0 gerrit]# chkconfig --list |grep gerrit
gerrit             0:off       1:off       2:on 3:on 4:on 5:on 6:off


      1. 配置gerrit nginx反向代理

#上傳http認證文件

[root@pelican gerrit]# pwd
/usr/local/nginx/gerrit
[root@pelican gerrit]# cp /u01/soft/dev0/gerrit2.passwd ./


#配置gerrit  server

[root@pelican nginx]# vim conf/nginx.conf
location /gerrit{
                #root /home/gerrit/Review;
                proxy_pass http://dev0: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 /usr/local/nginx/gerrit/gerrit2.passwd;
        }
#另外還需配置gerrit端口29418的代理
#stream tcp
stream {
    #gerrit-mysql
    server {
       listen 3300;
       proxy_pass dev0:3306;
       proxy_buffer_size 512k;
       allow all;
    }
    #gerrit-ssh
    server{
        listen 29418;
        proxy_buffer_size 512k;
        proxy_pass dev0:29418;
        allow all;
    }
}


#最後配置騰訊雲增加入站規則TCP:29418

      1. 配置gitweb權限

在單獨項目的ACL裏爲項目的用戶組增加了對refs/meta/configread權限

    1. Jenkins安裝

#解壓jenkins tar

#修改啓停腳本,改變jenkins家目錄

[root@dev0 jenkins]# cat start-jenkins.sh
#!/bin/bash
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
export JENKINS_HOME=/u01/jenkins/.jenkins
cd /u01/jenkins
nohup /u01/jdk/jdk1.8.0_131/bin/java -Dfile.encoding=utf-8 -Dhudson.util.ProcessTree.disable=true -jar jenkins.war --httpPort=8081 >> system_out.log 2>&1 &
echo $!> /u01/jenkins/.pid
echo "===jenkins started!"


#解壓jenkins配置tar

[root@dev0 jenkins]# tar -zxvf jenkins-home.tar.gz



#跟上述做法相同,將jenkins作爲系統服務

[root@dev0 jenkins]# vim /etc/init.d/Jenkins
#!/bin/sh
#
# Startup script for the nginx Continuous Integration server
#
# chkconfig: - 85 15
# description: Jakarta nginx Java Servlets and JSP server
# processname: tomcat
# pidfile: /var/run/nginx.pid
JENKINS_USER=root
LOCKFILE=/var/lock/jenkins
APP_NAME=jenkins
JENKINS_HOME=/u01/jenkins
case "$1" in
  start)
        echo -n "Starting $APP_NAME: "
        su -p -s /bin/sh $JENKINS_USER -c "$JENKINS_HOME/start-jenkins.sh"
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch $LOCKFILE
        ;;
  stop)
        echo -n "Shutting down $APP_NAME: "
        su -p -s /bin/sh $JENKINS_USER -c "$JENKINS_HOME/stop-jenkins.sh"
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f $LOCKFILE
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  condrestart)
       [ -e $LOCKFILE ] && $0 restart
       ;;
  status)
        su -p -s /bin/sh $JENKINS_USER -c "ps -ef |grep $APP_NAME"
        ;;
  *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
esac
exit 0
[root@dev0 jenkins]# chmod a+x /etc/init.d/jenkins
[root@dev0 jenkins]# chkconfig jenkins on
[root@dev0 gerrit]# chkconfig --list |grep Jenkins


#創建公鑰
[root@dev0 gerrit]# ssh-keygen


#啓動jenkins
      1. Jenkins nginx反向代理配置

[root@pelican nginx]# cat conf/nginx.conf
#端口8081
       server {
        listen       80;
        server_name  localhost;
        location /{
           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://dev0:8081;
           access_log logs/jenkins_access.log;
        }
       location /gerrit-trigger{
           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://dev0:8081/gerrit-trigger;
           access_log logs/jenkins_access.log;
        }
       }



#登陸jenkins更改jenkins地址

Jenkins URL : http://123.206.68.97:8081

#端口8081後續經測試,不能正常跳轉。改爲80ok
      1. Jenkins配置修改

  1. 系統設置àgerrit triggeràgerritServeràGerrit Connection Setting

因爲gerritjenkins裝在同一臺機子上,HostName127.0.0.1 Frontend URLhttp://127.0.0.1:8080/

  1. 配置公網ippelican)從節點,用於發佈上線包腳本

  1. pelican配置dev0免密登陸認證

  2. 節點配置


  1. job上綁定slave-pelican
      1. jenkins job源碼管理修改

1)改爲本地10.0.0.16,修改所有構建項目地址

Repository URLssh://[email protected]:29418/Weidi_ccbc

2)用jekins用戶登陸gerrit,添加jenkins所在機器(dev0)的ssh-key

  1. Gerrit升級說明

203機子gerrit-2.8.1最高升級至gerrit-2.11.10,再高的版本則導致eclipse gerrit插件不能使用,gerrit-web也不能使用gitweb

    1. Gerrit升級步驟

  1. 上傳gerrit-2.9.wargerrit-2.10.wargerrit-2.11.10.wardev0

[root@dev0 dev0]# scp gerrit-2.10.war gerrit-2.9.war gerrit-2.11.10.war dev0:/u01/soft/

  1. 依次安裝2.9-->2.10-->2.11

[root@dev0 soft]#  java -jar gerrit-2.9.war  init -d /u01/gerrit/Review/
[root@dev0 soft]#  java -jar gerrit-2.10.war init -d /u01/gerrit/Review/
[root@dev0 soft]#  java -jar gerrit-2.11.10.war init -d /u01/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/gerrit/


 

    1. 升級日誌

  1. 增加commit size列,有紅、黃、綠三種顏色

  2. 增加GitWeb操作界面

  3. 可在gerrit的一次commit上,在瀏覽器上增加或修改文件

  4. 進入代碼review界面,去除換行符”\r”

  5. Review,可選擇一段代碼塊,按下c,添加draft,選中代碼塊高亮

 

  1. Eclipse配置修改

      1. Maven地址修改

WindowsàpreferresàMavenàUser settingà

點擊open fileà將原來的192.168.1.111換成39.108.0.229
保存完,點擊Update settingsàReindexàApply
      1.  Gerrit配置修改

WindowàShow ViewàOtheràMylynàTeam repositoryà

#原來192.168.1.203的可以右鍵àdisconnected
右鍵ànew repositoryàTask repositoryàGerrit Code Reviewà
Finish即可.
#刪除原有項目
ImportàProject from gitàgerritàtihu-gerritàrefresh
選擇要導入項目。
#此步選擇cancel
重新選擇importàExisting Maven Projectà
找到剛剛clone下來的項目導入即可
  1. 安裝問題記錄

    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發送郵件異常

[root@ccy001 gerrit]# vim Review/etc/gerrit.config
[sendemail]
        smtpServer = smtp.qq.com
        smtpServerPort = 465
        smtpEncryption = ssl
        smtpUser = [email protected]
        smtpPass = ybvnzfujouqocaaa
        sslVerify = false
        [email protected]


 

    1. Gerritreview時,The page you requested was not found, or you do not have permission to view

原因:gerrit nginx配置代理時,去掉反斜槓/

    1. 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用戶到Non-Interactive Users

 

    1. 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


 

    1. Gerritgit unpack error問題

#解決的辦法就是到reviewdb數據庫裏,先從patch_sets表中找出change_id對應commitid的記錄,確定無誤後

我們要做的是將其關閉,並把狀態置爲Abandon。(友情提醒,涉及重要業務,注意備份數據庫)

mysql> update changes set open='N',status='A' where change_id=1974;

 

    1. jenkins build的時候拿的不是新提交的代碼

源碼管理à選擇git,Refspecrefs/changes/*:refs/changes/*Branch Specifier (blank for 'any')$GERRIT_REFSPEC

    1. jenkins配置slave的時候命令找不到


#把要用的命令創建一個快捷方式到/usr/bin,如

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/share/java
ln -s /u01/mvn/apache-maven-3.3.9/bin/mvn /usr/bin/mvn
ln -s /usr/local/git/bin/git /usr/bin/git


 

    1. com.jcraft.jsch.JSchException: Auth failUser: jenkins KeyFile: /root/.ssh/id_rsa

原因是新安裝的gerrit jenkins用戶沒有配置主機的ssh key,登陸jenkins用戶到gerrit,添加SSH Public key 就好了

    1. jenkins打包構建時,殺掉jenkins腳本里執行的進程,解決辦法

解決辦法:

  1. 啓動Jenkins的時候加上-Dhudson.util.ProcessTree.disable=true,也就是java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war

  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

 

    1. git克隆項目出現no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

解決辦法:在window上用git bash執行

vim ~/.ssh/config

#插入
Host *
    KexAlgorithms +diffie-hellman-group1-sha1
珠海數通天下科技有限公司
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章